我用谷歌搜索并检查了其他答案,但它们并不是我想要的。
我的外卡路线:
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
也许我解决这个问题的方法是错误的,请在任何一种情况下建议。
答案 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('/');
});

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