Javascript Express+;json()+;邮递员,请求正文为空

Javascript Express+;json()+;邮递员,请求正文为空,javascript,json,node.js,express,body-parser,Javascript,Json,Node.js,Express,Body Parser,在使用以下各项时: var app = require('express')(); var bodyParser = require('body-parser'); app.post('/test', bodyParser.json(), function(req, res) { res.json(req.body); }); var port = 4040; app.listen(port, function() { console.log('server up and runni

在使用以下各项时:

var app = require('express')();
var bodyParser = require('body-parser');

app.post('/test', bodyParser.json(), function(req, res) {
  res.json(req.body);
});

var port = 4040;
app.listen(port, function() {
  console.log('server up and running at port: %s', port);
});
以下是邮递员发来的邮件:

我得到了一个空洞的回答。在使用bodyParser.json()时,我已经关注了很多线程,出于某种原因,我仍然收到一个空对象作为响应。我遗漏了什么?

更安全的使用方法是将其作为整个应用程序的中间件。必须以以下方式重构代码:

// Permit the app to parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));

// Use body-parser as middleware for the app.
app.use(bodyParser.json());

app.post('/test', function(req, res) {
  res.json(req.body);
});

当您向Postman发出请求时,请确保选择
x-www-form-urlencoded
选项卡,而不是
raw
选项卡。

要使
bodyParser.json
有效,您应该在请求中提供
内容类型
标题,其值为
应用程序/json

我熟悉中间件模式,在这个例子中,我只是想让事情尽可能简单。x-ww-form-urlencoded确实有效,但我选择了另一个选项作为答案,因为json blob是我发送数据的首选方式。使用[x-www-form-urlencoded]对我来说很有效。我使用了导致错误的表单数据。上面答案的引用可以与匹配