在编写 API 时,我遇到了一个非常棘手的错误:当我尝试执行res.send(INSERT JSON)
带有 Content-Type 标头application/json
(大多数 AJAX 的默认设置),我得到一个invalid json
错误。当我将内容类型设置为其他任何内容时(例如text/plain
),我得到了正确的响应,但是为了使用一些前端框架,我需要支持application/json
。这是实际的错误消息:
Error: invalid json
at Object.exports.error (/Users/Brad/node_modules/express/node_modules/connect/lib/utils.js:44:13)
at IncomingMessage.module.exports (/Users/Brad/node_modules/express/node_modules/connect/lib/middleware/json.js:68:73)
at IncomingMessage.EventEmitter.emit (events.js:85:17)
at IncomingMessage._emitEnd (http.js:366:10)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
at Socket.socket.ondata (http.js:1680:22)
at TCP.onread (net.js:410:27)
我的服务器代码如下:
app.configure(function () {
app.use(express.bodyParser());
app.use(express.cookieParser('SALT'));
app.use(express.static(__dirname + '/static/'));
app.use(express.session());
});
app.get('/users', function(req, res) {
res.send({'test': 'test'});
});
Here is an picture of my Postman setup--I am using the Postman Chrome extension to test my API:
我相信问题是您希望在服务器响应中使用 Content-Type 标头;不在您的请求 Content-Type 标头中。
当您在请求中使用 Content-Type 标头时,Express 将读取 Content-Type 并尝试将提供的信息解释为该 Content-Type,在本例中为 JSON。因为这是一个 GET 请求,因此没有正文,所以 Express 尝试将空字符串解释为 JSON,这会导致错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)