当我使用 postman 向 localhost:8080/api/newUser 发送带有请求正文的 POST 请求时:
{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);
关于node.js - 请求正文中的 JSON 数据未使用 body-parser 进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36388507/