【发布时间】:2022-01-27 17:26:57
【问题描述】:
我是 FASTAPI 和 python 的新手。我需要获取根路径上的所有路由并将其显示给用户但是我无法找到一种方法来递归地获取所有路径。api 的版本是VersionedFastAPI 的帮助并且当前代码没有给出版本内部的路径,只返回通用的。
代码:
app = FastAPI()
router = APIRouter(
tags=["utilities"]
)
@router.get("/")
def read_root(request: Request):
url_list = [
route.path
for route in request.app.routes
]
return { "endpoints": set(url_list) }
@app.get('/foo')
@version(1)
def foo():
return "foo V1"
@app.get('/foo')
@version(2)
def foo():
return "foo V2"
app = VersionedFastAPI(app, enable_latest=True, version_format='{major}', prefix_format='/v{major}')
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"]
)
app.include_router(router)
获取\路由下的路径列表的代码
url_list = [
route.path
for route in request.app.routes
]
return { "endpoints": set(url_list) }
这仅返回["/v1/openapi.json","/v2/docs","/openapi.json","/v2/openapi.json","/v2","/","/redoc","/v1","/docs","/docs/oauth2-redirect","/v1/docs","/latest"] 但是这里错过了/foo 端点。任何有关这方面的线索都会有所帮助。
【问题讨论】: