У меня есть веб-приложение, созданное с использованием Node.js и Express. Теперь я хотел бы перечислить все зарегистрированные маршруты с соответствующими методами.
Например, если я выполнил
app.get('/', function (...) { ... });
app.get('/foo/:id', function (...) { ... });
app.post('/foo/:id', function (...) { ... });
Я хотел бы получить объект (или что-то эквивалентное этому), такой как:
{
get: [ '/', '/foo/:id' ],
post: [ '/foo/:id' ]
}
Возможно ли это, и если да, то как?
ОБНОВЛЕНИЕ: Между тем, я создал пакет npm под названием get-route, который извлекает маршруты из данного приложения, что решает эту проблему. В настоящее время поддерживается только Express 4.x, но, думаю, пока все нормально. Просто к вашему сведению.
Ответы:
экспресс 3.х
Ладно нашел сам ... это просто
app.routes
:-)экспресс 4.х
Приложения - построены с
express()
Маршрутизаторы - построены с
express.Router()
Примечание . Стек также включает в себя функции промежуточного программного обеспечения, его необходимо отфильтровать, чтобы получить только «маршруты» .
источник
app.routes.routes
- что означает, что я мог сделать JSON.stringify (app.routes.routes)app._router.stack
app._router.stack
не определено.источник
Это позволяет получить маршруты, зарегистрированные непосредственно в приложении (через app.VERB), и маршруты, которые зарегистрированы как промежуточное ПО маршрутизатора (через app.use). Экспресс 4.11.0
источник
Я адаптировал старый пост, который больше не находится в сети, для моих нужд. Я использовал express.Router () и зарегистрировал свои маршруты следующим образом:
Я переименовал файл document.js в apiTable.js и адаптировал его так:
тогда я называю это в моем server.js как это:
Результат выглядит так:
Это всего лишь пример, но может быть полезным .. я надеюсь ..
источник
Вот небольшая вещь, которую я использую, чтобы получить зарегистрированные пути в Express 4.x
источник
${Object.keys(r.methods).join(', ')} ${r.path}
))DEBUG=express:* node index.js
Если вы запустите приложение с помощью приведенной выше команды, оно запустит ваше приложение с
DEBUG
модулем и предоставит маршруты, а также все используемые функции промежуточного программного обеспечения.Вы можете сослаться: ExpressJS - Отладка и отладка .
источник
DEBUG=express:paths
чтобы видеть только вывод пути, а не все другие сообщения отладки. Спасибо!Hacky copy / paste ответ любезно предоставлен Дагом Уилсоном по вопросам экспресс-github . Грязный, но работает как шарм.
Производит
источник
print
?https://www.npmjs.com/package/express-list-endpoints работает довольно хорошо.
пример
Использование:
Вывод:
источник
server = express(); app1 = express(); server.use('/app1', app1); ...
Функция для регистрации всех маршрутов в Express 4 (может быть легко настроена для v3 ~)
Логи выводятся:
Сделано это в NPM https://www.npmjs.com/package/express-list-routes
источник
выход JSON
выглядит так:
вывод строки
выглядит так:
они основаны на @ Corvid в ответ
надеюсь это поможет
источник
Я был вдохновлен экспресс-маршрутами Labithiotis-маршрутов, но я хотел получить обзор всех моих маршрутов и грубых URL-адресов за один раз, не указывать маршрутизатор и каждый раз вычислять префикс. Что-то, что я придумал, это просто заменить функцию app.use моей собственной функцией, которая хранит baseUrl и данный маршрутизатор. Оттуда я могу распечатать любую таблицу всех моих маршрутов.
ПРИМЕЧАНИЕ, это работает для меня, потому что я объявляю свои маршруты в определенном файле (функции) маршрутов, который передается в объекте приложения, например так:
Это позволяет мне передать другой объект 'app' с помощью фальшивой функции use, и я могу получить ВСЕ маршруты. Это работает для меня (убрал некоторую проверку ошибок для ясности, но все еще работает для примера):
Этот полный пример (с некоторыми базовыми маршрутизаторами CRUD) был только что протестирован и распечатан:
С помощью Cli-таблицы я получил что-то вроде этого:
Который пинает задницу.
источник
Экспресс 4
Учитывая конфигурацию Express 4 с конечными точками и вложенными маршрутизаторами
Расширение @caleb ответ можно получить все маршруты рекурсивно сортируются.
Для основного вывода строки.
Обновление 1:
Из-за внутренних ограничений Express 4 невозможно получить смонтированное приложение и смонтированные маршрутизаторы. Например, невозможно получить маршруты из этой конфигурации.
источник
Нужны некоторые настройки, но должны работать для Express v4. Включая те маршруты, добавленные с
.use()
.редактировать: улучшения кода
источник
Немного обновленный и более функциональный подход к ответу @ prranay:
источник
Это сработало для меня
O / P:
источник
Инициализировать экспресс-маршрутизатор
Импорт пользовательского контроллера
Пользовательские маршруты
Экспорт API-маршрутов
Вывод
источник
В Express 3.5.x я добавляю это перед запуском приложения для печати маршрутов на моем терминале:
Может быть, это может помочь ...
источник
Вы можете реализовать
/get-all-routes
API:Вот демоверсия: https://glitch.com/edit/#!/get-all-routes-in-nodejs
источник
Так что я смотрел на все ответы .. не понравилось больше всего .. взял несколько из нескольких .. сделал это:
не самая красивая .. но вложенная и делает свое дело
также обратите внимание на 20 там ... Я просто предполагаю, что не будет нормального маршрута с 20 методами .. поэтому я вывести это все ..
источник
детали маршрута перечисляют маршрут для "экспресс": "4.xx",
ПРОСТОЙ ВЫХОД КОДА
источник
Просто используйте этот пакет npm, он даст веб-вывод, а также вывод терминала в хорошем отформатированном табличном представлении.
https://www.npmjs.com/package/express-routes-catalogue
источник
express-routes-catalogue
также отображает маршруты в формате HTML, а другой нет.Вот однострочная функция для печати маршрутов в Express
app
:источник
Я опубликовал пакет, который печатает все промежуточное программное обеспечение, а также маршруты, очень полезные при проверке экспресс-приложения. Вы монтируете пакет как промежуточное ПО, так что он даже сам печатает:
https://github.com/ErisDS/middleware-stack-printer
Это печатает своего рода дерево, как:
источник