запрос.тело пусто при выполнении запроса post через http.запрос
у меня есть приложение nodejs с помощью bodyparser (), и этот маршрут :
app.post('/users', function(req, res){
res.json(req.body)
})
когда я свернуться
curl -X POST 127.0.0.1:3000/users -d 'name=batman'
сервер отправляет обратно этот JSON :
{ name: 'batman' }
моя проблема заключается в попытке сделать тот же запрос с http.запрос, req.тело пусто. я делаю тот же звонок, хотя, вот тест.JS файл, который я запускаю с узлом :
var http = require('http');
var options = {
host: '127.0.0.1',
port: 3000,
path: '/api/users',
method: 'POST'
};
var request = http.request(options, function (response) {
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(str);
});
});
request.end("name=batman");
тело запроса пусто -> {}
почему ? я пробовал установить content-length, но не делаю что угодно.
2 ответов
до Content-Type
рассказать bodyParser()
какой парсер использовать. Для обычных данных формы следует использовать Content-Type: application/x-www-form-urlencoded
, так:
var options = {
host: '127.0.0.1',
port: 3000,
path: '/api/users',
method: 'POST',
'Content-Type': 'application/x-www-form-urlencoded'
};
должен сделать трюк.
Edit: если вы обнаружите, что делаете много клиентских HTTP-запросов в узле, я сердечно рекомендую Mikeal Роджерс' request
модуль, что делает эти вещи ветер.
убедитесь, что эти строки присутствуют в вашем app.js
или server.js
var bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));