Express.js路由:可选的splat参数?
我有一条看起来像这样的路线:
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 });
});