Express + bodyParser.json() + Postman,req.body为空

Express + bodyParser.json() + Postman, req.body is empty

使用以下内容时:

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);
});

以及来自 Postman 的以下 post:

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

一种更安全的使用方法 body-parser 是将其用作整个应用程序的中间件。必须以这种方式重构代码:

// 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 上发出请求时,请确保 select x-www-form-urlencoded 选项卡而不是 raw 选项卡。

要使 bodyParser.json 正常工作,您应该在请求中为 Content-Type header 提供值 application/json