我正在编写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",但我正在获得" *"的正则表达式, 那么我怎么能做到这一点?
答案 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;
}
如果你告诉我更多关于你的用例的话,也许有一个更优雅的解决方案。