我们正在从ExpressJS 3迁移到ExpressJS 4,我们注意到以下API已被弃用:
req.param(fieldName)
req.param(fieldName, defaultValue)
是否有一个中间件可以将这些API带回来,就像其他已经外化的API一样?'从快递到独立模块?
EDITED: 澄清 - 需要一种API,它提供对参数的抽象泛型访问,无论它是路径参数,查询字符串参数还是正文字段。
答案 0 :(得分:15)
基于Express Documentation,我们应该像这样使用
上req.param(fieldName)
上
req.params.fieldName
我个人更喜欢req.params.fieldName
而不是req.param(fieldName)
答案 1 :(得分:8)
你为什么要把它带回来?有一个原因是它被弃用了,因此你应该放弃它。
有关他们弃用API的原因的讨论可在其问题跟踪器#2440上找到。
该函数是从req.params
,req.body
或req.query
获取参数值的快捷方式。这当然会在某些情况下造成麻烦,这就是为什么他们要删除它。请亲自查看该功能here。
如果你只是使用url参数的函数,你只需用req.query['smth'] or 'default'
检查代替它:
var param_old = req.param('test', 'default');
var param_new = req.query['test'] || 'default';
(请注意,空字符串会被评估为false
,因此它们实际上并非100%相等。您想要的当然取决于您,但在大多数情况下它并不重要。)
答案 2 :(得分:6)
好的,在阅读了@Ineentho的参考文献中给出的主题后,我们决定提出以下答案:
https://github.com/osher/request-param
一个connect / express中间件,用于启用快递4中不推荐使用的req.param(名称,默认)API
中间件不仅带回了goo的旧功能。 它还允许您 自定义从中检索参数的集合的顺序 ,作为默认规则和每次调用: - )
玩得开心!