2

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

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

在“做某事”部分,我想检索 req.route.regexp,然后在此基础上进行处理。我期待 req.route.regexp 应该是我们来到这里的确切 URL 正则表达式。但是因为我在'*'中处理这个,所以正则表达式没有给我等效的req.route.params。

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

例如:我的网址为:“/:val”,因为我期待正则表达式“/^/(?:([^/]+?))/?$/i”,但我得到的正则表达式为“* “,那么我怎么能做到这一点呢?

4

1 回答 1

3

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

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

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;
}

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

于 2013-01-31T18:35:24.743 回答