首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Node.js和Express进行POSTing时,如何访问请求体?

使用Node.js和Express进行POSTing时,如何访问请求体?
EN

Stack Overflow用户
提问于 2012-07-24 14:47:28
回答 12查看 481.1K关注 0票数 236

我有以下Node.js代码:

代码语言:javascript
复制
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();
});

现在,如果我发布类似这样的内容:

代码语言:javascript
复制
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()的情况下获得原始请求吗

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-07-24 21:14:21

Express 4.0及更高版本:

$ npm install --save body-parser

然后在你的节点应用中:

代码语言:javascript
复制
const bodyParser = require('body-parser');
app.use(bodyParser);

Express 3.0及更低版本:

尝试在您的cURL调用中传递此参数:

--header "Content-Type: application/json"

并确保您的数据为JSON格式:

{"user":"someone"}

此外,还可以在node.js代码中使用console.dir查看对象内部的数据,如下例所示:

代码语言:javascript
复制
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

票数 194
EN

Stack Overflow用户

发布于 2015-04-24 11:18:40

从Express4开始,下面的代码似乎可以做到这一点。请注意,您需要使用npm安装body-parser

代码语言:javascript
复制
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
});
票数 43
EN

Stack Overflow用户

发布于 2019-08-01 18:09:31

2019年,您无需安装body-parser

您可以使用:

代码语言:javascript
复制
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
});
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11625519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档