Nodejs,Express GET POST params

Joh*_*ams 7 javascript node.js express

我是Node/Express的新手.我看到GET params可以这样捕获:

app.get('/log/:name', api.logfunc);
Run Code Online (Sandbox Code Playgroud)

POST如此:

app.post('/log', ... (在req.body中可用的表单变量.)

我知道app.all,但是有一种方法可以在使用app.all时获得GET和POST的所有变量吗?(我在PHP中已经习惯了$ _REQUEST!:)

谢谢,

ebo*_*man 21

您正在处理三种不同的参数传递方法:

1)路径参数,表示路由器捕获在req.param您的路由中使用冒号前缀组件或正则表达式捕获时.这些可以出现在GET和POST请求中.

2)URL查询字符串参数,req.query如果您使用express.query中间件,将会捕获这些参数.这些也可以出现在GET和POST请求中.

3)身体参数,req.body如果您使用express.bodyParser中间件将被捕获.这些只会出现在具有Content-Type"x-www-form-urlencoded"的POST请求中.

所以你需要做的是将所有三个对象(如果存在)合并为一个.没有本地Object方法可以做到这一点,但有很多流行的解决方法.例如,underscore.js库定义了一个extend允许您编写的函数

req.params=_.extend(req.params || {}, req.query || {}, req.body || {}).
Run Code Online (Sandbox Code Playgroud)

如果您不想使用库并希望自己推广扩展对象,请查看此博客文章.

  • 我相信`req.param()`确实如此 - http://expressjs.com/api.html#req.param (3认同)