Express.js参数的URL编码,带特殊字符

我正在构build一个express.js web API,并且遇到了一个与我们的遗留数据一起工作的障碍。 我们在包含许多不同特殊字符的特定数据模型上具有标识字段。 以下是我们的一些示例ID:

W2220-059AP0254LL%M031 SMT II #12B75984 ST14P134-0110072,9\'98 TKH-12-110????? 

所以我们有一个端点: /thing/{id}

上述例子显然不适用于这个端点。 我试图在我们的第一个入口点上进行URI编码,但是在大多数情况下已经太晚了。

有没有其他办法可以做到这一点?

试试这个中间件(在你的任何路由之前):

 app.use(function(req, res, next) { req.url = req.url.replace(/^(\/thing\/)(.+)/, function($0, $1, $2) { return $1 + encodeURIComponent($2); }); next(); }); 

这假定对/thing/:id 所有请求都没有正确编码。