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