Ответ 1
Я столкнулся с этим вопросом, ища ту же функциональность.
@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"
},
Обратите внимание, что происходит с параметрами: он знает группы захвата и параметры во всех возможных путях, независимо от того, используются они или нет в текущем запросе.
Таким образом, стекирование нескольких путей через массив может быть сделано легко, но побочные эффекты, возможно, непредсказуемы, если вы надеетесь получить что-нибудь полезное из пути, который использовался в качестве параметров или групп захвата. Это, вероятно, более полезно для избыточности/сглаживания, и в этом случае он будет работать очень хорошо.
Изменить: см. также @c24w answer ниже.
Изменить 2: Это умеренно популярный ответ. Имейте в виду, что ExpressJS, как и большинство библиотек Node.js, является подвижным праздником. Хотя вышеописанная маршрутизация все еще работает (я использую ее в настоящий момент, очень удобная функция), я не могу ручаться за вывод объекта запроса (это, безусловно, отличается от того, что я описал). Пожалуйста, тщательно протестируйте, чтобы убедиться, что вы получите желаемые результаты.