Fastapi swagger-ui.css 、swagger-ui-bundle.js 无法加载
·
版本信息: python3.8 fastapi 0.78.0
问题:
访问 /docs 查看接口文档是发现swagger资源无法加载(可能是npm宕机了)

解决办法:
尝试降低fastapi版本并未奏效,于是想下载下资源文件,改为本地静态资源加载
github下载地址:
swagger-ui/dist at master · swagger-api/swagger-ui · GitHub
redoc
百度网盘下载:
链接:https://pan.baidu.com/s/1XyqTnqxHigWOGKN1soOoag?pwd=4xl3
提取码:4xl3
1. 分别下载 swagger-ui.css 、swagger-ui-bundle.js,放置在本地static文件夹下
2. 需要定位到源码中请求位置:

调用位置:

3.
方法1. 很简单的做法就是直接在源码上修改这三个地址

但是显然不够pythonic;
方法 2. 也可以通过复制这个方法然后修改参数,通过sys.modules覆盖原有方法

方法 3. 但是我要的很简单,只要修改参数就可以了(注意必须覆盖真实的调用位置fastapi.applications)
def use_local_static():
# 覆盖原有方法,使得swagger从本地加载静态资源
sys.modules["fastapi.applications"].get_swagger_ui_html.__kwdefaults__["swagger_js_url"] = "/static/swagger/swagger-ui-bundle.js"
sys.modules["fastapi.applications"].get_swagger_ui_html.__kwdefaults__["swagger_css_url"] = "/static/swagger/swagger-ui.css"
sys.modules["fastapi.applications"].get_swagger_ui_html.__kwdefaults__["swagger_favicon_url"] = "/static/favicon.jpg"
sys.modules["fastapi.applications"].get_redoc_html.__kwdefaults__["redoc_js_url"] = "/static/redoc/bundles/redoc.standalone.js"
sys.modules["fastapi.applications"].get_redoc_html.__kwdefaults__["redoc_favicon_url"] = "/static/redoc/favicon.png"
最后不要忘记挂载静态路由:
app.mount("/static", StaticFiles(directory="static"), name="static")
更多推荐




所有评论(0)