我有以下Node.js代码:
var express = require('express');
var app = express.createServer(express.logger());
app.use(express.bodyParser());
app.post('/', function(request, response) {
response.write(request.body.user);
response.end();
});
现在,如果我发布类似这样的内容:
curl -d user=Someone -H Accept:application/json --url http://localhost:5000
我得到了预期的Someone
。现在,如果我想获得完整的请求正文怎么办?我试着做response.write(request.body)
,但是Node.js抛出一个异常,说“第一个参数必须是字符串或缓冲区”,然后进入“无限循环”,异常说“发送后不能设置头”;即使我做了var reqBody = request.body;
,然后写了response.write(reqBody)
,这也是真的。
这里有什么问题?
另外,我可以在不使用express.bodyParser()
的情况下获得原始请求吗
发布于 2012-07-24 21:14:21
Express 4.0及更高版本:
$ npm install --save body-parser
然后在你的节点应用中:
const bodyParser = require('body-parser');
app.use(bodyParser);
Express 3.0及更低版本:
尝试在您的cURL调用中传递此参数:
--header "Content-Type: application/json"
并确保您的数据为JSON格式:
{"user":"someone"}
此外,还可以在node.js代码中使用console.dir查看对象内部的数据,如下例所示:
var express = require('express');
var app = express.createServer();
app.use(express.bodyParser());
app.post('/', function(req, res){
console.dir(req.body);
res.send("test");
});
app.listen(3000);
另一个问题可能也有帮助:How to receive JSON in express node.js POST request?
如果您不想使用bodyParser,请查看另一个问题:https://stackoverflow.com/a/9920700/446681
发布于 2015-04-24 11:18:40
从Express4开始,下面的代码似乎可以做到这一点。请注意,您需要使用npm
安装body-parser
。
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.listen(8888);
app.post('/update', function(req, res) {
console.log(req.body); // the posted data
});
发布于 2019-08-01 18:09:31
2019年,您无需安装body-parser
。
您可以使用:
var express = require('express');
var app = express();
app.use(express.json())
app.use(express.urlencoded({extended: true}))
app.listen(8888);
app.post('/update', function(req, res) {
console.log(req.body); // the posted data
});
https://stackoverflow.com/questions/11625519
复制相似问题