繁体   English   中英

如何使用 Node.js 列出 Express 应用程序中的所有路径,例如 Rails 应用程序中的“rake routes”命令?

[英]How to list all paths in an Express application using Node.js, like "rake routes" command in Rails Application?

我试图将几个 NPM 包安装到我的快速应用程序中,以允许我查看我的应用程序路线,但我没有取得任何成功。 我习惯于使用rake routes在我的 rails 应用程序中显示我的路线,但在 express 中没有发现任何类似的东西。 在 express 中获得类似功能的最佳方法是什么?

您是否看过npm package pathfinder-ui 我不是Rails用户,但从某种意义上说,它与rake routes类似,因为它将在Express(4.x)应用程序中显示所有已注册的路由。 它也与众不同:

  • 它是一个GUI,可让您以1.)可以过滤/搜索的表格或2.)可扩展树形图的形式查看所有路由
  • 可让您使用请求构建器测试路由-一种卷曲的替代方法(有点像使用POSTMAN,如果您曾经使用过POSTMAN)。

它可能会提供比您想要的更多的东西,但是它绝对应该以开发者友好的方式显示Express路由,并且很容易配置。

我也刚看过这个包,可能值得一看: express-ls-routes

您可以在相同的上下文找到另一个堆栈溢出问题,该问题在给定的波纹管文章中列出了Express应用程序中的所有路径/路由:

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

作为参考,您还可以访问以下有关“列出使用Express或Restify构建的所有REST端点”的线程

一旦成功遵循了最后给定的链接,您将获得输出路径/路径,如图像中的波纹管所示:

在此处输入图片说明

你可以跑,

npm install express-route-list-cli

接着

npx route-list <relative app file path>

我通过阅读上述答案创建了此代码。 这不仅会返回直接路由,还会返回通过路由器在特定路径上创建的路由:

const app = express()

let allRouters=[
    ["/api/v1/auth",AuthRouter],
    ["/api/v1/user",UserRouter]
]

app
    .use(express.json())
    .use(cookieParser())

allRouters.forEach(it=>app.use(it[0],it[1]))
app.listen(3000, () => console.log("server started at port 3000"))

app.get("/", (req, res) =>{
    let routes = [
        ["/",app._router],
        ...allRouters
    ]
    let routesJs = {}
    routes.forEach(it=>{
        let key = it[0]
        let value  = it[1].stack.filter(r => r.route).map(r => ({method: Object.keys(r.route.methods)[0].toUpperCase(), path: r.route.path}));
        routesJs[key]=value
    })
       res.json(routesJs)
} )

localhost:3000/的响应如下所示:

{
    "/": [
        { "method": "GET","path": "/" },
        { "method": "GET","path": "/mail"}
    ],
    "/api/v1/auth": [
        {"method": "POST","path": "/signup"},
        {"method": "POST","path": "/login"},
        {"method": "POST","path": "/securelogin"},
        {"method": "PATCH","path": "/forgotpassword"},
        {"method": "PATCH","path": "/resetpassword"}
    ],
    "/api/v1/user": [
        {"method": "PATCH","path": "/updateprofile"},
        {"method": "GET","path": "/allusers"}
    ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM