如何在Express.js中迭代POST请求的主体?

时间:2014-02-25 02:27:36

标签: javascript node.js express post

我正在为NodeJS中的POST请求构建一个通用的路由处理程序。

我需要迭代POST请求的req.params,而不事先知道参数是什么。

我尝试了以下但没有成功:

console.log("checking param keys...")
Object.keys(req.param).forEach(function(key){
console.log(key +"is " + req.params(key) )
})

当我运行此代码时,只会打印“检查参数键...”。

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:4)

我猜你问的是如何从url编码的POST请求体中迭代表单帖子,所以它是bodyParser()中间件,你可以做到这一点。

req.params是一个数组,其中包含由路由定义的快速应用程序映射的属性。查看req.params的详细信息,而不是请求正文。请参考以下代码:

var app = require("express")();

app.use(express.bodyParser());
app.post("/form/:name", function(req, res) {
   console.log(req.params);
   console.log(req.body);
   console.log(req.query);
   res.send("ok");
});

然后像这样测试:

$ curl -X POST --data 'foo=bar' http://localhost:3000/form/form1?url=/abc

您将看到如下控制台输出:

[ name: 'form1' ]
{ foo: 'bar' }
{ url: '/abc' }

所以req.body是访问请求体的正确方法,req.query是所有HTTP方法的读取查询字符串。