无效的JSON GET请求Express.js

在编写API时,遇到了一个非常棘手的错误:当我尝试使用Content-Type头application/json (大多数AJAX的默认值res.send(INSERT JSON)执行res.send(INSERT JSON)时,我得到一个invalid json错误。 当我将内容types设置为其他任何东西(例如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'}); }); 

这是我的邮递员设置的图片 – 我使用Postman Chrome扩展来testing我的API: 在这里输入图像描述

我相信问题是你想在你的服务器响应中使用Content-Type标题; 不在您的请求内容types标头。

当您在请求中使用Content-Type标头时,Express将读取Content-Type,并尝试将提供的信息解释为Content-Type,在本例中为JSON。 因为这是一个GET请求,因此没有正文,Express试图将一个空string解释为JSON,这会给你错误。