小编典典

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

all

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


阅读 80

收藏
2022-05-18

共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);
2022-05-18