请求正文中的JSON数据不会使用body-parser进行分析

当我发送POST请求到本地主机:8080 / api / newUser与请求正文:

{name: "Harry Potter"} 

在服务器端console.log(req.body)打印:

 { '{name: "Harry Potter"}': '' } 

server.js

 var express = require('express'); var app = express(); var router = express.Router(); var bodyParser = require('body-parser'); app.use('/', express.static(__dirname)); router.use(function(req, res, next) { next(); }); router .route('/newUser') .post(function(req, res) { console.log(req.body); }); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // support json encoded bodies app.use('/api', router); app.listen(8080); 

我究竟做错了什么?

在express.js中,声明中间件的顺序非常重要。 bodyParser中间件必须比你自己的中间件(API端点)早定义。

 var express = require('express'); var app = express(); var router = express.Router(); var bodyParser = require('body-parser'); app.use('/', express.static(__dirname)); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); // support json encoded bodies router .route('/newUser') .post(function(req, res) { console.log(req.body); }); app.use('/api', router); app.listen(8080);