我正在为NodeJS中的POST请求构建一个通用的路由处理程序。
我需要迭代POST请求的req.params
,而不事先知道参数是什么。
我尝试了以下但没有成功:
console.log("checking param keys...")
Object.keys(req.param).forEach(function(key){
console.log(key +"is " + req.params(key) )
})
当我运行此代码时,只会打印“检查参数键...”。
有人知道怎么做吗?
答案 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方法的读取查询字符串。