我正在构建一个express.js网络API,并且使用我们的旧数据遇到了麻烦。我们在特定数据模型上有标识字段,其中包含许多不同的特殊字符。以下是我们的一些示例ID:
W2220-059AP0254LL%M031
SMT II #12B75984
ST14P134-0110072,9\'98
TKH-12-110?????
所以我们有一个端点,如:/thing/{id}
显然,上述示例不适用于此端点。我试图在我们的第一个入口点使用快速进行URI编码,但是当它遇到它在大多数情况下已经太晚了。
还有其他方法可以达到这个目的吗?
答案 0 :(得分:2)
尝试使用此中间件(在您的任何路由之前):
app.use(function(req, res, next) {
req.url = req.url.replace(/^(\/thing\/)(.+)/, function($0, $1, $2) {
return $1 + encodeURIComponent($2);
});
next();
});
这假设对/thing/:id
的所有请求都没有正确编码。