fastapi swagger文档无法渲染问题

发布时间 2023-10-11 09:51:08作者: CJTARRR
  • 由于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.