koa2框架获取所有接口列表并通过接口暴露
koa2框架获取所有接口列表并通过接口暴露

koa2框架获取所有接口列表并通过接口暴露

koa2框架获取所有接口列表并通过接口暴露

router.get('/routesList', async(ctx, next)=>{
//这是唯一需要手动修改的,将路由文件的关键字放到这个数组中,再动态拼接路由文件名,之所以这样处理,是因为这样可以更加灵活地控制返回哪些接口数据
  let routerList = ['menu', 'role', 'user']
  let data = []
  routerList.forEach(el => {
      let filePath = '../routes/' + el + '.route'
      let li = {
        catogory: el,
        list:[]
      }
      li.list.push(...require(filePath).stack.map(i => {
        return {
           methods: i.methods,
           url: i.path
            }   
       }))
       data.push(li)
  });
  ctx.body={
    ...Res[0],
    data:data
  }
})

这样,只要请求 /routesList,便可以得到所有接口的列表,按照路由文件进行了分类,这样便于前端展示,是一个简易版的swagger(只有列表,没有参数信息,没有调试,也没有导出),调试接口的话,完全可以通过apifox等工具实现,又好功能又完善

{
    "status": 0,
    "msg": "成功",
    "data": [
        {
            "catogory": "menu",
            "list": [
                {
                    "methods": [
                        "HEAD",
                        "GET"
                    ],
                    "url": "/menu/getAll"
                },
                {
                    "methods": [
                        "HEAD",
                        "GET"
                    ],
                    "url": "/menu/getMenuTree"
                }
            ]
        },
        {
            "catogory": "role",
            "list": [
                {
                    "methods": [
                        "HEAD",
                        "GET"
                    ],
                    "url": "/role/getAll"
                }
            ]
        }
    ]
}