fastapi: 列出所有include_router所包含的router以及每个router下的路由
一,代码:
说明:
router要加上tag做说明
endpoint要加上summary做说明
@router.get("/allroutes", summary="路由列表")
def get_routers_and_routes(request: Request):
current_app = request.app
# 用字典来对 router 进行归类,Key 为 router 的标签名 (Tag)
# 因为在 FastAPI 中,一个 APIRouter 通常会绑定一个独特的 tags 清单
router_mapping = {}
for route in current_app.routes:
# 只处理用户定义的业务路由
if isinstance(route, APIRoute):
# 获取当前路由的标签,如果没有设置标签,归为 "Default"
# route.tags 通常是一个列表,比如 ["UserManagement"]
route_tags = route.tags if route.tags else ["Default"]
if route.path == '/':
continue
# 路由的基础信息
route_info = {
"path": route.path,
"methods": list(route.methods),
"endpoint_name": route.name,
"summary": route.summary
}
# 按 Tag 将路由归类到对应的 router 组中
for tag in route_tags:
if tag not in router_mapping:
router_mapping[tag] = {
"router_tag": tag,
"routes_count": 0,
"routes": []
}
router_mapping[tag]["routes"].append(route_info)
router_mapping[tag]["routes_count"] += 1
# 将字典转为列表格式返回
return {"routers": list(router_mapping.values())}
二,测试效果:

浙公网安备 33010602011771号