我有一个看起来像这样的路线:Express.js路由:可选的spat参数?
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
,事实并非如此。
是否有可能有一个可选的图示参数,或者我必须使用正则表达式来检测?
编辑:
更清晰,这里有我想要达到的要求:
- 第一和第二PARAMS是需要
- 的第一个参数是静态的,第二个是一个命名参数。
- 任意数量的可选附加的参数可以被追加并仍然命中该路线。
你想做什么?如果你不需要知道splat,只需执行''/ path /:firstParam/*''。如果你需要它,请执行'/ path /:firstParam /:secondParam?/ *''。 – 2012-04-05 02:53:21
我正在寻找splat是可选的 - 你给的第一个例子不匹配'/ path/foo',(这是我的路线最初看起来像我想要一个可选的图示)。另外,在第二个例子中,添加splat实际上否定了可选的第二个参数 - '/ path/foo'将不会匹配你的第二个模式(对于这个问题,'/ path/foo/bar'也不会) - 其中之一表示'路由器'更烦人的部分。 – Jesse 2012-04-05 07:14:49
我个人只想把'/ path /:firstParam'和'/ path /:firstParam /:secondParam /'作为具有共享控制器的两个独立路由器。没有必要让你的网址混淆 – 2012-04-05 16:31:29