feat: 优化入口文件执行次数
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
from fastapi import FastAPI
|
||||
from fastapi.openapi.docs import get_swagger_ui_oauth2_redirect_html, get_redoc_html, get_swagger_ui_html
|
||||
from fastapi.responses import RedirectResponse
|
||||
from starlette.staticfiles import StaticFiles
|
||||
|
||||
|
||||
def add_docs_route(app: FastAPI):
|
||||
"""
|
||||
专门处理文档静态资源本地代理的接口
|
||||
"""
|
||||
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
|
||||
# 自定义 Swagger 页面(使用本地资源)
|
||||
@app.get("/docs", include_in_schema=False)
|
||||
async def custom_swagger_ui():
|
||||
"""
|
||||
提供自定义的 Swagger UI 文档页面
|
||||
|
||||
Returns:
|
||||
Swagger UI HTML 页面,使用本地静态资源加载
|
||||
"""
|
||||
return get_swagger_ui_html(
|
||||
openapi_url=app.openapi_url,
|
||||
title=app.title + " - Swagger UI",
|
||||
oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,
|
||||
swagger_js_url="/static/swagger-ui-bundle.min.js",
|
||||
swagger_css_url="/static/swagger-ui.min.css",
|
||||
)
|
||||
|
||||
@app.get(app.swagger_ui_oauth2_redirect_url, include_in_schema=False)
|
||||
async def swagger_ui_redirect():
|
||||
"""
|
||||
处理 Swagger UI 的 OAuth2 重定向回调
|
||||
|
||||
Returns:
|
||||
OAuth2 重定向 HTML 响应
|
||||
"""
|
||||
return get_swagger_ui_oauth2_redirect_html()
|
||||
|
||||
@app.get("/redoc", include_in_schema=False)
|
||||
async def redoc_html():
|
||||
"""
|
||||
提供自定义的 ReDoc 文档页面
|
||||
|
||||
Returns:
|
||||
ReDoc HTML 页面,使用本地静态资源加载
|
||||
"""
|
||||
return get_redoc_html(
|
||||
openapi_url=app.openapi_url,
|
||||
title=app.title + " - ReDoc",
|
||||
redoc_js_url="/static/redoc.standalone.js",
|
||||
)
|
||||
|
||||
@app.get("/")
|
||||
async def redirect_root_to_docs():
|
||||
"""
|
||||
将根路径请求重定向到 Swagger 文档页面
|
||||
|
||||
Returns:
|
||||
重定向响应到 /docs 路径
|
||||
"""
|
||||
return RedirectResponse("/docs")
|
||||
Reference in New Issue
Block a user