我有一个请求进入我的应用程序,如下所示:
POST /?post%2F5125504547b49d91b2000001 200 53ms - 9.35kb
其中,当未编码时看起来像:
POST /?post/5125504547b49d91b2000001 200 53ms - 9.35kb
我的问题是如何通过快速路线捕捉到这一点?
我尝试了以下方法:
app.all "/?post/:id",
app.all "/?post%2F:id",
有任何想法吗?
路由路径定义是一个正则表达式,因此您需要双重转义问号,这是一个特殊字符
app.all "/\\?post%2F:id"
我建议使用中间件将 url 操纵回“正常”的东西,以便您可以像在 express 中那样路由和响应它。
也许像这样的伪代码:
app.use(function (req, res, next) {
if (req.originalUrl.match(/^\/(\?post)/))
req.url = req.originalUrl = req.originalUrl.replace('%2F', '/').replace('/?','/');
next();
});