繁体   English   中英

Express.js:匹配路线中的全部

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM