使用fastapi的時候,swagger-ui.css 、swagger-ui-bundle.js、redoc.standalone.js 有時候無法加載(國內環境原因或者是局域網屏蔽),此時就需要自己用魔法下載好對應文件,然后替換到fastapi里面去。
fastapi里面依靠這2個函數實現docs和redoc:
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
fastapi里面官網給的解決辦法:
https://github.com/tiangolo/fastapi/blob/ac93277d3b506f4076aee1af6ae5a86406f545c6/docs_src/custom_docs_ui/tutorial001.py#L4
實踐起來就是,首先下載好這些文件:
其次復現出/docs路由和/redoc路由:
import os
import uvicorn
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_htmlapp = FastAPI(title='outpainting_captioning_upscaler',description='outpainting images, captioning images,upscaler images',version='1.0.0',docs_url=None,redoc_url=None, # 設置 ReDoc 文檔的路徑)
app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)
app.mount("/static", StaticFiles(directory="static"), name="static")@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():return get_swagger_ui_html(openapi_url="/openapi.json",title="xx",# oauth2_redirect_url=app.swagger_ui_oauth2_redirect_url,swagger_js_url='/static/swagger/swagger-ui-bundle.js',swagger_css_url='/static/swagger/swagger-ui.css',swagger_favicon_url='/static/swagger/img.png',)@app.get("/redoc", include_in_schema=False)
async def redoc_html():return get_redoc_html(openapi_url=app.openapi_url,title=app.title + " - ReDoc",redoc_js_url="/static/swagger/redoc.standalone.js",)# 寫個測試接口
@app.get('/xx')
async def test():return {'message': 'test success'}if __name__ == '__main__':uvicorn.run(f'{os.path.basename(__file__).split(".")[0]}:app',host='0.0.0.0',port=7777,reload=False,workers=1)
其中文件也可以去這里下載:
下載:https://wwsm.lanzouy.com/i682Q1frjnmd 密碼:9zw2
成功: