2016-04-03 69 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與快遞(身體解析器)