【问题标题】:nodeJS route all requestnodeJS路由所有请求
【发布时间】:2013-01-15 21:55:19
【问题描述】:

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

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

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

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

例如:我的 url 为:“/:val”,因为我期待 regexp “/^/(?:([^/]+?))/?$/i”,但我得到“*”的正则表达式, 那么我该如何实现呢?

【问题讨论】:

    标签: node.js express routes


    【解决方案1】:

    app.get('*', ...)的handler被调用时,最终的路由还没有匹配到,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;
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 2018-11-30
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多