-
由于fastapi默认使用国外的cdn获得支持swagger文档的js和css文件, 所以在国内, /docs接口渲染不出来.
-
解决方法1
# 在app生效之前,将生成swagger文档的方法替换掉.(在fastapi为:fastapi.openapi.docs.get_swagger_ui_html)
from fastapi import FastAPI, applications
from fastapi.openapi.docs import get_swagger_ui_html
def swagger_monkey_patch(*args, **kwargs):
"""
fastapi的swagger ui默认使用国外cdn, 所以导致文档打不开, 需要对相应方法做替换
在应用生效前, 对swagger ui html做替换
:param args:
:param kwargs:
:return:
"""
return get_swagger_ui_html(
*args, **kwargs,
swagger_js_url='https://cdn.staticfile.org/swagger-ui/4.15.5/swagger-ui-bundle.min.js', # 改用国内cdn
swagger_css_url='https://cdn.staticfile.org/swagger-ui/4.15.5/swagger-ui.min.css'
)
applications.get_swagger_ui_html = swagger_monkey_patch
app = FastAPI()
# 指定swagger支持为3.0.0版本
app.openapi_version = "3.0.0" -
解决方法2
将swagger-ui-bundle.min.js和swagger-ui.min.css的源码下载下来,做成静态文件.然后配合解决方法1中的方法,将对应url改成静态文件的相对url.