nodejs(express)是否可以有不区分大小写的查询string?

似乎查询string是区分大小写的。 是否有可能有一个不区分大小写的查询string?

如果我的url有?Id=10 ,访问req.query.id返回undefined

这是不可能的,但是你可以插入一个非常简单的中间件,例如,将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(); }); 

有了Robert提出的解决scheme,请注意,无论何时从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(); }); 

除了不太容易出错之外,这种方法还会使req.query完整地枚举操作,原始解决scheme可能会创build重复的键/值对。