我有以下 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)。
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);