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

时间:2015-08-26 15:08:32

标签: node.js url express encoding

我正在构建一个express.js网络API,并且使用我们的旧数据遇到了麻烦。我们在特定数据模型上有标识字段,其中包含许多不同的特殊字符。以下是我们的一些示例ID:

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

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

显然,上述示例不适用于此端点。我试图在我们的第一个入口点使用快速进行URI编码,但是当它遇到它在大多数情况下已经太晚了。

还有其他方法可以达到这个目的吗?

1 个答案:

答案 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的所有请求都没有正确编码。