2016-06-23 3 views
1

Я пробовал темы на Node "req is not defined" и req.body is empty when making a post request via http.request и тому подобное, но проблема остается.Node.js req.body is blank

на стороне сервера код:

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

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    next(); 
}); 

app.post('/sampleurl', function (req, res) { 
    var reqbody = req.body; 
    console.log(reqbody); 
}); 

app.listen(process.env.PORT); 
console.log("listening"); 

Что я посылаю (используя hurl.it):

post request response

Что я получаю обратно от сервера (console.log) :

listening 
{} 
+1

Попробуйте определить 'reqbody' как' req.test' вместо этого. –

ответ

5

Я просто попробовал r code .. Это прекрасно.

Что вам не хватает, это добавить заголовки в запрос.

Добавить Content-Type заголовок в application/jsonenter image description here

+0

Спасибо, сейчас работает. – Robert

2

Продлить другой ответ, который является правильным, тело-анализатор проверяет Content-Type, прежде чем пытаться разобрать тело HTTP.

Если вы хотите изменить это поведение, вы можете иметь тело-парсер попытку разобрать любой входной сигнал в формате JSON независимо от Content-Type:

app.use(bodyParser.json({ type: '*' })); 

Подстановочный * будет сказать ему, чтобы попытаться разобрать на любой тип: https://github.com/expressjs/body-parser#bodyparserjsonoptions

+0

Отличный метод! Спасибо за ваш ответ. – Robert