如何在Express中获取所有已注册的路线?

node.js Node.js

樱Gil

2020-03-24

我有一个使用Node.js和Express构建的Web应用程序。现在,我想用适当的方法列出所有已注册的路由。

例如,如果我执行过

app.get('/', function (...) { ... });
app.get('/foo/:id', function (...) { ... });
app.post('/foo/:id', function (...) { ... });

我想检索一个对象(或等效的东西),例如:

{
  get: [ '/', '/foo/:id' ],
  post: [ '/foo/:id' ]
}

这可能吗?如果可以,怎么办?


更新:同时,我创建了一个名为get-routes的npm软件包,该软件包从给定的应用程序中提取路由,从而解决了此问题。当前,仅支持Express 4.x,但我想现在可以了。仅供参考。

第3336篇《如何在Express中获取所有已注册的路线?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

2个回答
番长猿 2020.03.24

Just use this npm package, it will give the web-output as well as terminal output in nice formatted table view.

在此处输入图片说明

https://www.npmjs.com/package/express-routes-catalogue

西门 2020.03.24

快递3.x

好吧,我自己找到的...只是app.routes:-)

快递4.x

应用程序 -内置express()

app._router.stack

路由器 -内置express.Router()

router.stack

注意:堆栈也包含中间件功能,应该对其进行过滤以获取“路由”

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android