小编典典

使用Node.js和Express进行发布时如何访问请求正文?

javascript

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

这里有什么问题?

另外,我可以不使用而直接获得原始请求express.bodyParser()吗?


阅读 285

收藏
2020-05-01

共1个答案

小编典典

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);
2020-05-01