我的路线如下所示:
app.all('/path/:namedParam/*splat?',function(req,res,next){
if(!req.params.length){
// do something when there is no splat
} else {
// do something with splat
}
});
但是,这不起作用 - 如果我调用 path/foo/bar
它会到达路线,但如果我调用 path/foo
,它不会.
是否可以有一个可选的 splat 参数,还是我必须使用正则表达式来检测这个?
编辑:
为了更清楚,这里是我想要达到的要求:
- 第一个和第二个参数是必需的
- 第一个参数是静态的,第二个是命名参数。
- 可以附加任意数量的 可选 附加参数,并且仍然可以访问路由。
最佳答案
这适用于 express 4 上的/path 和/path/foo,注意 ?
之前的 *
。
router.get('/path/:id*?', function(req, res, next) {
res.render('page', { title: req.params.id });
});
关于node.js - Express.js 路由 : optional splat param?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020099/