Образец запроса расширенного клиента REST
Я использую Postman и Advanced REST-клиент для создания базового запроса POST для следующего кода -
'use strict';
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var http = require('http');
// configure the app to use bodyParser()
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
//app.listen(6666);
http.createServer(function (req, res) {
h2s(req, res);
}).listen(6666, '127.0.0.1');
console.log('Server running at http://127.0.0.1:6666/');
module.exports = function h2s(req, res) {
console.log("inside h2s");
app.use(function (req, res) {
console.log("req.body : " + req.body);
res.send("OK");
});
}
Но, когда я отлаживаю, я обнаружил, что req.body отсутствует в дереве "req object". Что более странно, все изменения, которые я делаю для req.headers, доступны в дереве объектов req.
Похоже, я, кажется, делаю тривиальную ошибку, но я не могу понять это. Были проблемы со стрельбой в течение часа или около того, но не повезло!
Может ли кто-нибудь из вас понять, почему req.body, кажется, отсутствует в дереве объектов req?
Будет очень полезно для меня. Спасибо!
Похоже, у вас есть несколько проблем в коде:
вместо
http.createServer(function (req, res) {
h2s(req, res);
}).listen(6666, '127.0.0.1');
console.log('Server running at http://127.0.0.1:6666/');
module.exports = function h2s(req, res) {
console.log("inside h2s");
app.use(function (req, res) {
console.log("req.body : " + req.body);
res.send("OK");
});
}
Для создания сервера попробуйте
http.createServer(app).listen(8000, '127.0.0.1'); //using http
Или (используя экспресс напрямую)
app.listen(8000,function(){
console.log('Server running at http://127.0.0.1:8000/');
});
Затем зарегистрируйте функцию обработчика для ваших запросов, там вы можете получить доступ к req.body
app.use(function (req, res) {
console.log("req.body : " + req.body);
res.send("OK");
});
Уважаемый u set body parser Url Encoding to true
// configure the app to use bodyParser()
app.use(bodyParser.urlencoded({
extended: true
}));
и проверить, распечатав req.body, он работает для меня и может для u также
доступ к req.body также возможен, когда
Content-Type: "применение/х-WWW-форм-urlencoded"
прочитай это
В вашем случае ваш контент-тип - application/json "
поэтому попробуйте изменить тип контента на "application/x-www-form-urlencoded",
также url кодирует параметры при отправке на сервер из JS
также решение может быть
// fire request
request({
url: url,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: JSON.stringify(requestData)
}, ...