2014-09-10 140 views
0

我正尝试向我的NodeJS路由发送JSON。NodeJS express无法接收POST json

curl -H "Content-Type: application/json" -d '{"name":"homer"}' http://localhost:3000/api 

所以,在我server.js:

... 
app.use(bodyParser.urlencoded({extended:true})); 
app.use(bodyParser.json({extended:true})); 
app.use(methodOverride('_method')); 
... 

然后,在我的路线:

router.post('/api', function (req, res){ 
    console.log(req.body); 
}); 

因此,输出显示undefined

难道我做错了什么?我正在使用Express v4。

+1

您确定在读取请求数据的'bodyParser'中间件之前没有中间件吗? – mscdex 2014-09-10 18:03:23

+0

@mscdex你明白了。通过使用'router'后''bodyparser'解决。谢谢! – user3175226 2014-09-10 18:04:58

回答

1

中间件和Express 4的路线在他们添加到您的应用程序的顺序执行。所以你需要确保你的路线是在你的中间件被使用之后。

0

JSON stringify从对象中产生一个字符串。 使用

JSON.parse({"name":"homer"}) 

$.param({"name":"homer"}) 
+0

同样的'undefined'问题。我猜这是'body-parser',因为我试图使用'curl'并显示相同的错误 – user3175226 2014-09-10 17:54:39

+0

尝试删除您的contentType在ajax后 – T00rk 2014-09-10 17:57:05

+0

同样的错误。我相信是后端的东西。我使用curl来测试:'curl -H“Content-Type:application/json”-d'{“name”:“homer”}'http:// localhost:3000/api'并且不起作用 – user3175226 2014-09-10 18:00:41