【发布时间】:2016-07-10 17:41:07
【问题描述】:
所以我在使用 node.js 运行的 server.js 文件中有以下代码。我正在使用 express 来处理 HTTP 请求。
app.post('/api/destinations', function (req, res) {
var new_destination = req.body;
console.log(req.body);
console.log(req.headers);
db.Destination.create(new_destination, function(err, destination){
if (err){
res.send("Error: "+err);
}
res.json(destination);
});
});
我在终端中运行以下命令:
curl -XPOST -H "Content-Type: application/json" -d '{"location": "New York","haveBeen": true,"rating": 4}' http://localhost:3000/api/destinations
运行 server.js 后会打印出以下内容。
{}
{ host: 'localhost:3000',
'user-agent': 'curl/7.43.0',
accept: '*/*',
'content-type': 'application/json',
'content-length': '53' }
所以 req.body 是 {}。我阅读了其他有关由于正文解析器而导致内容类型不正确的类似问题的 Stack Overflow 帖子。但这不是问题,因为 content-type 是 application/json。
任何想法如何获取请求的实际正文?
提前致谢。
【问题讨论】:
-
你确实使用 body-parser 中间件,对吧?
-
如果你是:如何,究竟是什么?
-
我正在使用正文解析器。基本上只需要它然后“app.use(bodyParser.urlencoded({extended: true }));”当然没有引号。
-
urlencoded()not 处理application/json(hint)。 -
非常感谢@robertklep 添加 bodyParser.json() 修复它。不敢相信我忘记了....非常感谢
标签: javascript json node.js express body-parser