Eu me deparei com essa pergunta enquanto procurava a mesma funcionalidade.
@Jonathan Ong mencionou em um comentário acima que o uso de arrays para caminhos está obsoleto, mas está explicitamente descrito no Express 4 e funciona no Express 3.x. Aqui está um exemplo de algo para tentar:
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
De dentro do request
objeto, com um caminho de /hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:
"route": {
"keys": [
{
"optional": false,
"name": "farcus"
}
],
"callbacks": [
null
],
"params": [
null,
null,
"lul"
],
"regexp": {},
"path": [
"/test",
"/alternative",
"/barcus*",
"/farcus/:farcus/",
"/hoop(|la|lapoo|lul)/poo"
],
"method": "get"
},
Observe o que acontece com os parâmetros: ele está ciente dos grupos de captura e dos parâmetros em todos os caminhos possíveis, sejam eles usados ou não na solicitação atual.
Portanto, empilhar vários caminhos por meio de um array pode ser feito facilmente, mas os efeitos colaterais são possivelmente imprevisíveis se você espera obter algo útil do caminho que foi usado por meio de parâmetros ou grupos de captura. É provavelmente mais útil para redundância / aliasing, caso em que funcionará muito bem.
Edit: Consulte também a resposta de @ c24w abaixo .
Edit 2: Esta é uma resposta moderadamente popular. Lembre-se de que o ExpressJS, como a maioria das bibliotecas Node.js, é um banquete móvel. Embora o roteamento acima ainda funcione (estou usando-o no momento, um recurso muito útil), não posso garantir a saída do objeto de solicitação (certamente é diferente do que descrevi). Teste cuidadosamente para garantir que obtém os resultados desejados.