Fastapi中Swagger UI加载缓慢的解决方案

在国内网络经常遇到Swagger UI加载缓慢的问题,这是由于Swagger UI的CSS和JS代码源在国外导致的,所以我们的解决方法是更改Swagger UI的CSS代码和JS代码源到国内的CND实现加速。这里以Fastapi框架的Swagger UI加载缓慢举例:

一、解决方法

在main.py(入口代码)代码中新增如下代码:

from fastapi import applications
from fastapi.openapi.docs import get_swagger_ui_html


def swagger_monkey_patch(*args, **kwargs):
    return get_swagger_ui_html(
        *args, **kwargs,
        swagger_js_url="https://cdn.staticfile.net/swagger-ui/5.1.0/swagger-ui-bundle.min.js",
        swagger_css_url="https://cdn.staticfile.net/swagger-ui/5.1.0/swagger-ui.min.css"
    )

applications.get_swagger_ui_html = swagger_monkey_patch

ps: 上述两个链接也可替换为如下链接提升加载速度:

swagger_js_url="https://cdn.bootcdn.net/ajax/libs/swagger-ui/5.1.0/swagger-ui-bundle.min.js",
swagger_css_url="https://cdn.bootcdn.net/ajax/libs/swagger-ui/5.1.0/swagger-ui.min.css"

需要注意的是:上述代码要放置在app=FastAPI()代码之前,即如下所示的代码之前

app = FastAPI(
    title="FastAPI",
    description="FastAPI接口文档",
    version="1.0.0",
)

二、常见问题

如果按照上述方案新增代码后出现入下图所示的提示,请尝试更换swagger_js_url和swagger_css_url版本即可。

image-20240318155723436

例如:https://cdn.staticfile.net/swagger-ui/[版本号]/swagger-ui-bundle.min.js,链接数字即为版本号,你可以访问https://cdn.staticfile.net/网站搜索swagger-ui查找适合的css和js版本即可

posted @ 2024-03-18 16:04  莫颀  阅读(981)  评论(0编辑  收藏  举报