我有以下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抛出一个异常,说“ 第一个参数必须是字符串或Buffer ”,然后转到“无限循环”,并出现异常,指出“ 发送标头后不能设置标头 ”。即使我var reqBody = request.body;再写了也是这样response.write(reqBody)。
Someone
response.write(request.body)
var reqBody = request.body;
response.write(reqBody)
这里有什么问题?
另外,我可以不使用而直接获得原始请求express.bodyParser()吗?
express.bodyParser()
$ npm install --save body-parser
然后在您的节点应用程序中:
const bodyParser = require('body-parser'); app.use(bodyParser);
尝试在您的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);