节点(Express)请求主体为空

我正在使用Node.JS和Restify今晚的简单的API,并通过req.params.fieldname接收参数方面的一切罚款。 我安装了CouchDB和Cradle,以便开始尝试将这些参数放到数据库中,但是在安装好所有东西后,req.params开始回到空的状态!

因为其他原因,我应该一直使用Express来开始,所以我尝试转换,看看我能否得到它的工作,但没有这样的运气。

 var express = require('express'); var app = express.createServer(); app.configure(function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); }); app.post('/', function(req, res){ res.send(req.body); }); app.listen(8080, function() { console.log('Printomatic listening at', app.url); }); 

我已经尝试了无数的变化,但不pipe什么req.body回来空。 我正在使用http-consoletesting,并发送简单的POST /内容{"name":"foobar"}

我很沮丧,在这一点上,我开始怀疑当安装Cradle / CouchDB(分别安装了NPM和Homebrew)的时候是否有什么不妥。 任何帮助将不胜感激,因为这是有点时间敏感。 提前感谢您的帮助!

你提到你发布JSON数据( {"name": "foobar"} )。 确保你发送Content-Type: application/json ,否则bodyParser将不会parsing它。

例如:

 $ curl -d 'user[name]=tj' http://local/ $ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/ 

这是因为bodyParserparsingapplication/jsonapplication/x-www-form-encodedmultipart/form-data ,并根据Content-Typeselect使用哪个parsing器。