我有一個看起來像這樣的路線: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