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"
}
]
}
]
}