遇到的FastAPI接口文档(http://127.0.0.1:8000/docs )打开很卡或者在内网环境显示空白,这通常是因为FastAPI默认使用的Swagger UI静态资源(如JavaScript、CSS文件)是从国外CDN加载的。在内网环境下无法访问这些外部资源,或者网络延迟高,就会导致这个问题。

方法一:使用第三方库(推荐,最简单)

  1. 安装库:使用 pip 安装 fastapi-cdn-host 或其他类似库(具体名称可能变化,请以官方为准,这里以 fastapi-cdn-host 为例):

    pip install fastapi-cdn-host
  2. 修改你的FastAPI应用代码(通常是 main.py):

    from fastapi import FastAPI
    from fastapi_cdn_host import monkey_patch_for_docs_ui  # 导入库
    
    app = FastAPI()
    
    # 应用补丁,替换默认的CDN链接为国内可用或本地链接
    monkey_patch_for_docs_ui(app)
    
    # ... 你的其他代码 ...
    @app.get("/")
    async def root():
        return {"message": "Hello World"}

    这个库会自动帮你把默认的国外CDN地址替换成国内可访问的地址(如 unpkg.com 或 staticfile.org)。

方法二:使用离线库(如 fastapi-offline

还有一个名为 fastapi-offline 的库,它打包了所有所需的离线资源,用法非常简单10。

  1. 安装库

    pip install fastapi-offline
  2. 修改你的FastAPI应用代码

    from fastapi_offline import FastAPIOffline  # 导入离线FastAPI类
    
    app = FastAPIOffline()  # 代替原来的 FastAPI()
    
    # ... 你的其他代码 ...

    这样就可以了,FastAPIOffline 会自动处理所有静态资源的离线服务。

优点:使用简单,不需要关心资源文件的下载和管理。
缺点:同样依赖于特定库的维护。


备注:


访问 http://127.0.0.1:8000/docs 

你可以看到所有定义的接口,点击任何一个可以展开查看详细信息,包括参数、请求体结构、响应模型等。点击 "Try it out" 按钮,可以直接填写参数并发送请求来测试接口

 


使用字符串形式的导入路径来启用重载功能

uvicorn.run("index:app", host="0.0.0.0", port=8000, reload=True)

    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐