req.body 未显示为键值对之一,但 req.headers 和其他键值对显示为
req.body isn't appearing as one of key-value pairs, but req.headers and others do
Sample 'Advanced REST Client' Request
我正在使用 Postman 和高级 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 object tree" 中缺少 req.body。更奇怪的是,我对 req.headers 所做的所有更改都在 req 对象树中可用。
看来我似乎犯了一个微不足道的错误,但我无法弄清楚。已经排除故障一个小时左右,但没有成功!
你们中的任何人都可以找出为什么 req.body 似乎从请求对象树中丢失了吗?
对我会有很大的帮助。谢谢!
req.body也可以访问
content-type:"application/x-www-form-urlencoded"
read this
在你的情况下,你的内容类型是 application/json"
所以尝试将 content-type 更改为 "application/x-www-form-urlencoded"
还有url encode从JS发送到服务器时的参数
也可以解决
// fire request
request({
url: url,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: JSON.stringify(requestData)
}, ...
您的代码中似乎有几个问题:
而不是
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");
});
亲爱的,你将正文解析器 Url 编码设置为 true
// configure the app to use bodyParser()
app.use(bodyParser.urlencoded({
extended: true
}));
并通过打印 req.body 进行检查,它对我有用,也可能对你有用
Sample 'Advanced REST Client' Request
我正在使用 Postman 和高级 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 object tree" 中缺少 req.body。更奇怪的是,我对 req.headers 所做的所有更改都在 req 对象树中可用。
看来我似乎犯了一个微不足道的错误,但我无法弄清楚。已经排除故障一个小时左右,但没有成功!
你们中的任何人都可以找出为什么 req.body 似乎从请求对象树中丢失了吗?
对我会有很大的帮助。谢谢!
req.body也可以访问
content-type:"application/x-www-form-urlencoded"
read this
在你的情况下,你的内容类型是 application/json"
所以尝试将 content-type 更改为 "application/x-www-form-urlencoded"
还有url encode从JS发送到服务器时的参数
也可以解决
// fire request
request({
url: url,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: JSON.stringify(requestData)
}, ...
您的代码中似乎有几个问题:
而不是
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");
});
亲爱的,你将正文解析器 Url 编码设置为 true
// configure the app to use bodyParser()
app.use(bodyParser.urlencoded({
extended: true
}));
并通过打印 req.body 进行检查,它对我有用,也可能对你有用