2013-01-31 132 views
2

我在寫一個nodejs應用程序。 我想將所有的請求路由到一些通用的API。對於我使用nodeJS路由全部請求

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

在「做什麼」節我想以檢索的req.route.regexp,然後根據我會做處理。我期待req.route.regexp應該是我們來到這裏的確切URL的正則表達式。但是,因爲我在'*'中處理這個問題,所以正則表達式並不等同於req.route.params。

那麼有什麼辦法可以根據所有路由(*)的app.get中的req.route.params獲取正則表達式。我有網址:「/:val」,因爲我期待正則表達式 「/^/(?:([^ /] +?))/?$/i」,但我是得到「*」的正則表達式, 那麼我怎麼能做到這一點?

回答

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

如果你告訴我一些關於你的使用情況,也許有更好的解決方案。