我有一个使用 bodyparser() 的 Nodejs 应用程序,这条路线:
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.request 发出相同的请求时,req.body 为空
我正在执行相同的调用,这是我使用 node 运行的 test.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-Type
告诉bodyParser()
使用哪个解析器。对于常规表单数据,您应该使用Content-Type: application/x-www-form-urlencoded
, so:
var options = {
host: '127.0.0.1',
port: 3000,
path: '/api/users',
method: 'POST',
'Content-Type': 'application/x-www-form-urlencoded'
};
应该做到这一点。
Edit:如果您发现自己在 Node 中执行大量客户端 HTTP 请求,我衷心推荐迈克·罗杰斯request module,这使得这些事情变得轻而易举。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)