node.js - 请求正文中的 JSON 数据未使用 body-parser 进行解析

标签 node.js json express body-parser

当我使用 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/

相关文章:

node.js - 如何使用 .d.ts 文件

node.js - 意外的代币 * Koa.js

node.js - Express - 无法在调试中提供静态文件

javascript - Node.js xml2js - 创建站点地图属性时被忽略

python - 在 View 中强制应用程序/json MIME 类型(Flask)

javascript - 使用javascript将自定义json对象复制到剪贴板

javascript - 以其他格式模拟 json 对象 javascript

javascript - 使用 NodeJS 的 Firebase 身份验证

javascript - 在 Node exec 回调响应中无法正常工作

jquery - 使用node js和jquery将数据从服务器端传递到客户端