可以针对多种模式检查express.js
路由吗?考虑下面的所有*
路由,req.route
与*
匹配。我想在同一个回调中针对一些特殊情况检查路由〜不在另一个all
或use
中间件内。
app.all('*', (req, res, next) => {
// How do I check if route is a special case like below
if(req.route in ['/foo/:param', '/bar/:param']){}
})
答案 0 :(得分:1)
我不确定你为什么要解除单独的.all
路线,因为在我看来这是执行这些检查的最佳方式:
app.all('/foo/:param', (req, res, next) => {
req.isFoo = true;
next();
});
app.all('/bar/:param', (req, res, next) => {
req.isBar = true;
next();
});
app.all('*', (req, res, next) => {
if (req.isFoo || req.isBar) { ... }
})
或者,类似于Chris的回答,有一条路线可以匹配两者:
app.all([ '/foo/:param', '/bar/:param' ], (req, res, next) => {
req.isSpecial = true;
next();
});
答案 1 :(得分:0)
因此,您不应该尝试使用通配符来捕获所有内容,而不是查找特定值。相反,创建一个查找这些特定值的端点,然后使用另一个路由捕获所有通配符。
app.get(['/test', '/another_value'], (req, res, next) => {
})