如何从Express项目的控制器代码中获取所有已注册路由及对应请求方法?
列出Express应用中已注册的路由及请求方法
根据提供的路由文件整理结果
- POST 请求路由:
["createUser", "addTask", "login"] - GET 请求路由:
["getAllPost"]
动态自动提取路由的实现方案
如果路由文件较多,手动整理效率低,可以通过Express内置的路由栈属性自动提取所有注册路由,以下是实用代码:
const express = require('express'); const app = express(); // 导入并注册你的路由文件 const taskRouter = require('./Router/task'); const workRouter = require('./Router/work'); app.use(taskRouter); app.use(workRouter); // 初始化路由分类容器 const routeMap = { GET: [], POST: [] }; // 遍历路由栈提取信息 app._router.stack.forEach(layer => { if (layer.route) { // 去除路径开头的斜杠 const path = layer.route.path.replace(/^\//, ''); // 获取当前路由支持的请求方法 const methods = Object.keys(layer.route.methods); methods.forEach(method => { routeMap[method.toUpperCase()].push(path); }); } }); // 输出整理后的路由 console.log('Post:', routeMap.POST); console.log('Get:', routeMap.GET);
运行这段代码后,控制台会自动输出和你期望格式一致的路由分类结果,后续新增路由也无需手动更新整理。
内容的提问来源于stack exchange,提问作者kulwant raj kisku
相关产品推荐
相关产品推荐

