一尘不染

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

node.js

我有一个使用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,但我想现在可以了。仅供参考。


阅读 242

收藏
2020-07-07

共1个答案

一尘不染

快递3.x

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

快递4.x

应用程序 -内置express()

app._router.stack

路由器 -内置express.Router()

router.stack

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

2020-07-07