快速通配卡路线与零件拆分

时间:2015-05-08 15:38:33

标签: node.js express routes

我用谷歌搜索并检查了其他答案,但它们并不是我想要的。

我的外卡路线:

app.all("/admin/*", function(request, response){

});

request.params提供

如果uri是/admin/login = { '0': 'login' }

如果uri是/admin/dashboard = { '0': 'dashboard' }

如果uri是/admin/dashboard/events = { '0': 'dashboard/events' }

但我的期望是。

{ '0': 'dashboard', '1': 'events' } //made up, not an actual result 

也许我解决这个问题的方法是错误的,请在任何一种情况下建议。

2 个答案:

答案 0 :(得分:0)

您可以简单地添加更多路线模式:

app.all("/admin/*/*", function(req, res) {
    // Going to /admin/foo/bar gives you
    // { '0': 'foo', '1': 'bar' }
    console.log(req.params);

    res.end();
});

更好的想法可能是命名您的路线部分,如下所示:

app.all("/admin/:one/:two", function(req, res) {
    // Going to /admin/foo/bar gives you
    // { one: 'foo', two: 'bar' }
    console.log(req.params);

    res.end();
});

答案 1 :(得分:0)

在正则表达式中使用捕获组。这将在request.params中反映出来。然后拆分匹配的字符串以生成结果数组。对于学习正则表达式,您可以前往http://regexr.com/



app.all(/^\/admin\/(.*)/, function(req, resp) { 
    var params = req.params[0] && req.params[0].split('/'); 
});




编辑:在没有参数的情况下不会抛出错误。