查询字符串似乎区分大小写.是否可以使用不区分大小写的查询字符串?
如果我的网址有?Id=10,则访问req.query.id返回undefined.
rob*_*lep 26
这是不可能的,但你可以插入一个非常简单的中间件,例如,它将所有键中的小写req.query:
// insert this before your routes
app.use(function(req, res, next) {
for (var key in req.query)
{
req.query[key.toLowerCase()] = req.query[key];
}
next();
});
Run Code Online (Sandbox Code Playgroud)
使用Robert提出的解决方案,请注意,每当您阅读时req.query,都需要使用小写字母的键。这样一来,将来就容易添加API错误。
这是另一种中间件,它使用Proxy对象修改的行为req.query[...],因此查找不区分大小写:
app.use((req, res, next) => {
req.query = new Proxy(req.query, {
get: (target, name) => target[Object.keys(target)
.find(key => key.toLowerCase() === name.toLowerCase())]
})
next();
});
Run Code Online (Sandbox Code Playgroud)
除了不太容易出错之外,这种方法还req.query保留了枚举操作的完整性,其中原始解决方案可能会创建重复的键/值对。
| 归档时间: |
|
| 查看次数: |
7508 次 |
| 最近记录: |