请求正文中的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);