FastAPI docs接口文档打不开怎么解决
FastAPI 文档页面无法访问的主要原因是其默认 CDN 资源被屏蔽,可通过替换资源地址或本地部署解决。
核心问题诊断
FastAPI 默认使用 jsDelivr CDN 加载 Swagger UI 资源(swagger-ui-bundle.js 和 swagger-ui.css),由于该 CDN 在国内访问受限,导致文档页面加载失败。
有效解决方案
方法一:使用第三方库自动替换 CDN
1.安装 fastapi-cdn-host 包。
pip install fastapi-cdn-host
2.在代码中应用配置。
from fastapi import FastAPI
import fastapi_cdn_host
app = FastAPI()
fastapi_cdn_host.patch_docs(app)
该方法将自动替换为国内可用 CDN,操作简便且无需修改源码。
方法二:手动修改源码
- 定位到 FastAPI 安装目录下的 openapi/docs.py
- 替换以下字段的 CDN 地址:
swagger_js_url = "https://petstore.swagger.io/swagger-ui-bundle.js"
swagger_css_url = "https://petstore.swagger.io/swagger-ui.css"
此方案适合需要长期稳定部署的场景。
方法三:本地部署静态资源
- 下载 Swagger UI 资源包。
- 在项目中配置静态文件路径:
app.mount("/static", StaticFiles(directory="static"), name="static")
3.下载文件
https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui.css
https://cdn.jsdelivr.net/npm/swagger-ui-dist@5/swagger-ui-bundle.js
将以上两个文件保存到文件夹 /static 下。
修改文档加载路径指向本地资源。
该方案适用于内网环境或无外网访问的场景。
辅助排查建议
确认 ASGI 服务器运行状态(如 uvicorn main:app --reload)。
检查是否因路径冲突导致访问失败,可尝试修改 docs_url 参数。
升级 FastAPI 到最新版本以排除兼容性问题(pip install --upgrade fastapi)