The JSON data in request body is not getting parsed using body-parser

China☆狼群 提交于 2019-12-01 14:13:44

问题


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

{name: "Harry Potter"}

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

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

What am I doing wrong?


回答1:


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



回答2:


Change the request header

'Content-Type':'application/json'

So that bodyParser can parse the body.

*That is what works for me. i am using angular 2+ with express(body-parser)



来源:https://stackoverflow.com/questions/36388507/the-json-data-in-request-body-is-not-getting-parsed-using-body-parser

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!