2016-04-03 67 views
3

解析当我使用邮递员到本地主机发送POST请求:8080/API/NEWUSER与请求体:在请求主体的JSON数据是没有得到使用体解析器

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

我在做什么错?

+0

你在邮递员设置的参数是什么 –

回答

3

在express.js中,声明中间件的顺序非常重要。中间件必须早于自己的中间件(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); 
+0

谢谢,现在它工作正常。 –

+0

@ Sree.Bh在这种情况下,请将答案标记为已接受。 – NikhilWanpal

+0

完成@NikhilWanpal –

1

更改请求头

'的Content-Type': '应用/ JSON'

这样bodyParser可以解析体。

*这对我很有用。我使用角度5与快递(身体解析器)