无法使用body-parser解析请求正文中的JSON数据 [英] The JSON data in request body is not getting parsed using body-parser

查看:748
本文介绍了无法使用body-parser解析请求正文中的JSON数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用邮递员将POST请求发送到带有请求正文的localhost:8080/api/newUser时:

When I send a POST request using postman to localhost:8080/api/newUser with request body:

{name: "Harry Potter"}

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

At server end console.log(req.body) prints:

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

server.js

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端点)定义得早.

In express.js the order in which you declare middleware is very important. bodyParser middleware must be defined early than your own middleware (api endpoints).

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

这篇关于无法使用body-parser解析请求正文中的JSON数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆