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

背景

我想统计出 Express 的Web项目中已注册的路由,即统计出有哪些可调用的接口
示例项目:

const express = require("express");
const app = express();
const api = express();

api.all('/api/*',express.json());
api.get('/api/get',function (req,res){
   res.send(req.route);})
api.post('/api/post/:id',function (req,res){
   res.send(req.route);})
api.route('/api/route')
    .get(function (req,res){
   res.send(req.route);})
    .post(function (req,res){
   res.send(req.route);})

app.use('/test',api);
app.listen(8899,'localhost',function (){
   console.log('Express server listening at http://localhost:8899');})

统计要求

[
    {
   "method": "GET","path": "/test/api/get"},
    {
   "method": "POST","path": "/test/api/post/:id"},
    {
   "method": "GET","path": "/test/api/route"},
    {
   "method": "POST","path": "/test/api/route"},
    {
   "method": "GET","path": "/test/get_all_routes"}
]

要求:

  1. path中要包含挂载点路径,如上 app.use(“/test”,api),路径要包含 /test
  2. 不需要 api.all() 中的路由,该方法实际上只是对匹配到指定路由的HTTP方法,触发回调
  3. 对于挂载到api应用的路由也给统计出来,如 express.Router() 创建的路由里的path

获取已注册路由

测试项目

先给出用来测试获取已注册路由的项目

.
├── app.js
├── routes
│	├── users
│   │	├── index.js
│   │	├── user_v1.js
│   │	└── user_v2.js
│	└──	orders
│   │	├── index.js
│   │	├── order_v1.js
│	│	└── order_v2.js

给出各文件的主要代码

app.js 主应用启动文件

const express = require("express");
const app = express();
const api = express();
const cookieParser = require('cookie-parser');

const userapi = require("./routes/users");
const orderapi = require("./routes/orders");
const orderv2 = require("./routes/orders/order_v2");

api.use('/userapi', userapi);
api.use('/orderapi', orderapi);
api.use('/orderapi', orderv2);

api.use(cookieParser());
api.all('/api/*',express.json());
api.get('/api/get',function (req,res){
   res.send(req.route);})
api.post('/api/post/:id',function (req,res){
   res.send(req.route);})
api.route('/api/route')
    .get(function (req,res){
   res.send(req.route);})
    .post(function (req,res){
   res.send(req.route);})

app.use('/test',api);
app.listen(8899,'localhost',function (){
   
    console.log('Express server listening at http://localhost:8899');
})

/routes/users 相关路由文件

//  /routes/users/index.js 文件
const express = require('express');
const userapi = ex
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小青龍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值