Ho un percorso che assomiglia a questo:Instradamento Express.js: param param opzionale?
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
}
});
tuttavia, questo non funziona - se chiamo path/foo/bar
colpisce il percorso, ma se chiamo path/foo
, non è così.
E 'possibile avere un parametro splat opzionale o devo usare una regex per rilevare questo?
Edit:
di essere più chiaro, ecco i requisiti che sto cercando di realizzare:
- il primo e secondo params sono richiesto
- il primo parametro è statica , il secondo è un param nominato.
- un numero qualsiasi di facoltativo parametri aggiuntivi possono essere aggiunti e continuano a raggiungere la rotta.
cosa stai cercando di fare?se non hai bisogno di sapere splat, basta fare ''/ percorso /: firstParam/*''. Se ti serve, fai ''/ percorso /: firstParam /: secondParam?/*''. –
Sto cercando di avere lo splat facoltativo - il primo esempio che hai fornito non corrispondeva a '/ path/foo', (questo è il mio percorso originariamente sembrava prima che volessi uno splat opzionale). Inoltre, nel tuo secondo esempio, l'aggiunta dello splat nega in realtà il secondo param opzionale - '/ path/foo' non corrisponderà al tuo secondo pattern (nemmeno'/path/foo/bar' per quella questione ...) - uno di le parti più fastidiose del router espresso. – Jesse
personalmente andrei solo per '/ path /: firstParam' e'/path /: firstParam /: secondParam/'come due router separati con un controller condiviso. non c'è bisogno di rendere i propri URL confusi –