【问题标题】:List of all routes in express app (express-promise-router)express 应用中所有路由的列表(express-promise-router)
【发布时间】:2022-01-02 08:46:43
【问题描述】:

在我的后端应用程序中,我使用express-promise-router 来管理我的路线。 例如:

const express = require( 'express' );
const router = require( 'express-promise-router' )();
let app = express();
app.use( router.get( "/hc" , ( req,res,next )=> res.status( 200 ).send( "healthy!" ) ) );

我想列出后端应用程序中的所有路由。 因为我使用的是express-promise-router,所以我不能使用app._router.stack

我面临的问题是我使用了“子路由”:

app.use('/api/v1', require('./router'));

router.js:

router.use('/api/v1/user', require('./user_r'));

user_r.js:

router.get(...)

我尝试过的所有依赖项,例如 express-list-routesexpress-list-endpoints,由于层次结构而没有用处。

我确实尝试了这里的建议:

有什么建议吗?

【问题讨论】:

  • 你需要依赖 lib 内部,我不确定是否可以这样做。可能在某处的路由器对象上可用,例如路由器堆栈。目的是什么?如果您只需要了解它们,只需找到 with 正则表达式。如果您在运行时需要一个列表,请编写一个包裹 app.use(router... 并保留路由数组的助手。

标签: javascript node.js express express-router


【解决方案1】:

您可以为此使用express-list-endpoints 模块:

const listEndpoints = require('express-list-endpoints');
let app = require('express')();
// ... app usage
console.log(listEndpoints(app));

另外,您可能已经看过这些,但以后可能会有用:

【讨论】:

    【解决方案2】:

    我过去使用过 express-list-endpoints 包,效果很好。

    用法:

    const express = require("express");
    const expressPromiseRouter = require("express-promise-router");
    const listEndpoints = require("express-list-endpoints");
    
    const app = express();
    const router = expressPromiseRouter();
    
    router.get("/hc", (req, res) => res.status(200).send("healthy!"));
    
    app.use(router);
    
    console.log(listEndpoints(app));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-01
      • 2013-08-22
      • 1970-01-01
      • 2021-07-10
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      相关资源
      最近更新 更多