Я столкнулся с этим вопросом, ища ту же функциональность.
@Jonathan Ong упомянул в комментарии выше, что использование массивов для путей устарело, но это явно описано в Express 4 и работает в Express 3.x. Вот пример того, что можно попробовать:
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
Изнутри request
объекта, с путем /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"
},
Обратите внимание на то, что происходит с params: он знает о группах захвата и params во всех возможных путях, независимо от того, используются они в текущем запросе или нет.
Таким образом, сложение нескольких путей через массив может быть легко выполнено, но побочные эффекты могут быть непредсказуемыми, если вы надеетесь извлечь что-нибудь полезное из пути, который использовался с помощью параметров или групп захвата. Вероятно, это более полезно для избыточности / псевдонимов, и в этом случае это будет работать очень хорошо.
Изменить: также см. Ответ @ c24w ниже .
Изменить 2: это умеренно популярный ответ. Имейте в виду, что ExpressJS, как и большинство библиотек Node.js, - это подвижный праздник. Хотя приведенная выше маршрутизация по-прежнему работает (я использую ее сейчас, очень удобную функцию), я не могу поручиться за вывод объекта запроса (он определенно отличается от того, что я описал). Пожалуйста, проверьте внимательно, чтобы убедиться, что вы получите желаемые результаты.