[英]Express.js: Match route in catch all
可以针对多种模式检查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']){}
})
我不确定为什么要为此取消单独的.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) { ... }
})
或者,类似于克里斯的答案,只有一条路线可以匹配两者:
app.all([ '/foo/:param', '/bar/:param' ], (req, res, next) => {
req.isSpecial = true;
next();
});
因此,除了查找特定值之外,您不应尝试使用通配符来捕获所有内容。 而是,创建一个查找这些特定值的端点,然后使用另一条路由来捕获所有通配符。
app.get(['/test', '/another_value'], (req, res, next) => {
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.