2015-11-13 14 views
5

Tôi biết điều này đã được hỏi nhiều lần, nhưng tôi đã nhìn xung quanh và vẫn không thể tìm thấy câu trả lời cho vấn đề của mình.Express + Postman, req.body rỗng

Đây là mã của tôi, tôi đảm bảo sử dụng và định cấu hình trình phân tích cú pháp cơ thể trước khi xác định các tuyến đường. Tôi chỉ sử dụng .json() với bodyParser bởi vì ngay bây giờ tôi chỉ thử nghiệm một hàm POST, nhưng tôi thậm chí đã thử với app.use (bodyParser.urlencoded ({extended: true}));

var express = require('express'), 
    bodyParser = require('body-parser'), 
    app = express(); 

app.use(bodyParser.json()); 
app.set('port', (process.env.PORT || 5000)); 

app.listen(app.get('port'), function() { 
    console.log("Node app is running at localhost:" + app.get('port')) 
}); 

app.post('/itemSearch', function(req, res) { 
    //var Keywords = req.body.Keywords; 
    console.log("Yoooooo"); 
    console.log(req.headers); 
    console.log(req.body); 
    res.status(200).send("yay"); 
}); 

Dưới đây là cách tôi sử dụng Người đưa thư để kiểm tra tuyến đường này. enter image description here

và đây là câu trả lời tôi nhận được

Node app is running at localhost:5000 
Yoooooo 
{ host: 'localhost:5000', 
    connection: 'keep-alive', 
    'content-length': '146', 
    'cache-control': 'no-cache', 
    origin: 'chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop', 
    'content-type': 'multipart/form-data; boundary=----WebKitFormBoundarynJtRFnukjOQDaHgU', 
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36', 
    'postman-token': '984b101b-7780-5d6e-5a24-ad2c89b492fc', 
    accept: '*/*', 
    'accept-encoding': 'gzip, deflate', 
    'accept-language': 'en-GB,en-US;q=0.8,en;q=0.6' } 
{} 

Tại thời điểm này, tôi thực sự sẽ đánh giá cao sự giúp đỡ nào. Cảm ơn.

Trả lời

7

AFAIK bạn cần phải sử dụng Body-Parser: https://github.com/expressjs/body-parser

bodyParser = require('body-parser').json(); 
app.post('/itemSearch', bodyParser, function(req, res) { 
    //var Keywords = req.body.Keywords; 
    console.log("Yoooooo"); 
    console.log(req.headers); 
    console.log(req.body); 
    res.status(200).send("yay"); 
}); 

Sau đó thử với Postman thiết cho cơ thể như raw json:

{ 
    "test": "yay" 
} 
+2

Cảm ơn rất nhiều. Vấn đề là với PostMan tôi đã gửi yêu cầu thông qua dữ liệu mẫu – seongju

23

Sau khi dành một vài giờ tôi nhận ra cần phải thay đổi loại thô trong người đưa thư đến JSON enter image description here

+0

Bạn đã cứu ngày của tôi, cảm ơn !! – mimic

+0

Chỉ trong trường hợp ai đó nhìn vào đây, hãy chắc chắn rằng bạn đang sử dụng JSON của Người viết bài chứ không phải là tiêu đề Javascript. Tôi đã có Javascript và nó sẽ không hoạt động. – k00k

+0

Làm việc cho tôi. Cảm ơn !! –

Các vấn đề liên quan