nodeJS路由所有请求

时间:2013-01-31 17:42:03

标签: node.js express routes

我正在编写nodejs应用程序。 我想将所有请求路由到一些常见的API。为此,我正在使用

 app.get('*', function(req, res) {
   /* Do Something */
 });

In&34;做某事"第一部分想要检索req.route.regexp,然后基于我将进行处理。我期待req.route.regexp应该是我们来到这里的确切网址的正则表达式。但是当我在' *'中处理这个时,所以正则表达式不会给我等效的req.route.params。

那么有没有办法在所有路由(*)的app.get中根据req.route.params获取正则表达式。

Ex:我的网址为:" /:val",因为我期待regexp " / ^ /(?:( [^ /] +?))/?$ / i",但我正在获得" *"的正则表达式, 那么我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

当调用app.get('*', ...)的处理程序时,最终路线尚未匹配,快递不可能告诉您后续路线。

我看到的唯一解决方案是在所有路由中手动调用处理程序:

app.get('/:val', function (req, res) {
   if(!myGlobalHandler(req, res))
     return;
});

function myGlobalHandler(req, res) {
  if(somethingWrong(req)) {
    res.send({error: 'uh oh...'});
    return false;
  }

  return true;
}

如果你告诉我更多关于你的用例的话,也许有一个更优雅的解决方案。