当前位置: 首页 > article >正文

【FastAPI】离线使用Swagger UI 或 国内网络如何快速加载Swagger UI

在FastAPI中,默认情况下,当应用启动时,Swagger UI 会通过在线加载 Swagger UI 的静态资源。这意味着如果应用运行在没有互联网连接的环境中,默认的 Swagger 文档页面将无法加载。

为了在离线环境中使用 Swagger UI,你需要手动加载 Swagger UI 的静态文件并将其与 FastAPI 集成。以下是具体步骤:

1. 下载 Swagger UI 静态资源

  • 首先,你需要下载 Swagger UI 的静态文件,或者你可以直接从 官方文档页面 下载。
  • 下载后,你可以将静态文件放置在项目中的某个文件夹中,例如:./static/swagger-ui/
  • 备用方案:在浏览器中加载你服务的swagger界面,在debug界面找到swagger资源请求的url,下载文件。如下图所示:
    在这里插入图片描述

2. 配置 FastAPI 以使用本地 Swagger UI 资源

你可以通过 FastAPI 提供的 swagger_ui_init_oauth 参数,指定加载本地的 Swagger UI 文件。以下是一个实现示例:

from fastapi import FastAPI
from fastapi.openapi.docs import get_swagger_ui_html
from fastapi.staticfiles import StaticFiles

app = FastAPI()

# 挂载静态文件夹
app.mount("/static", StaticFiles(directory="static"), name="static")

# 自定义 Swagger 文档路由,指向本地的 Swagger UI 文件
@app.get("/docs", include_in_schema=False)
async def custom_swagger_ui_html():
    return get_swagger_ui_html(
        openapi_url=app.openapi_url,
        title=app.title + " - Swagger UI",
        swagger_js_url="/static/swagger-ui/swagger-ui-bundle.js",
        swagger_css_url="/static/swagger-ui/swagger-ui.css"
    )

@app.get("/")
async def read_root():
    return {"Hello": "World"}

# 自定义 OpenAPI 文档路由
@app.get("/openapi.json", include_in_schema=False)
async def get_openapi():
    return app.openapi()

3. 将本地静态资源与 FastAPI 配置集成

在这个示例中,/static 路径被用来提供本地 Swagger UI 的静态文件。get_swagger_ui_html() 函数用于生成 Swagger 文档的页面,并且使用本地的 JavaScript 和 CSS 文件。

目录结构示例

.
├── main.py  # FastAPI 代码文件
└── static
    └── swagger-ui
        ├── swagger-ui-bundle.js
        ├── swagger-ui.css
        └── ... (其他 Swagger UI 的静态文件)

4. 运行应用

运行 FastAPI 应用,访问 http://localhost:8000/docs,就可以在离线状态下正常访问 Swagger UI 文档页面了。

通过这种方式,你可以在无网络连接的情况下依然加载和使用 Swagger UI。


http://www.kler.cn/a/299730.html

相关文章:

  • YOLO11/ultralytics:环境搭建
  • git push到远程仓库时无法推送大文件
  • Java面试题2025-设计模式
  • 电商系统-用户认证(三)基于公钥解析JWT令牌
  • 【Leetcode刷题记录】166. 分数到小数
  • Go反射指南
  • 使用libmpeg解码mp3格式文件
  • OPPO 全家桶:Find X8/Pro、Pad3 Pro与Enco X3即将10月登场
  • OpenCV-模板匹配
  • 要在 Windows 系统中通过 VNC 远程连接到 CentOS 或 Ubuntu 服务器,可以按照以下步骤来配置和使用 VNC 进行远程桌面访问
  • MySQL——数据库的高级操作(一)数据备份与还原(1)数据的备份
  • 科技改变生活,IsMyLcdOK引领屏幕检测新风尚
  • Unity解析XML开发随机名字生成模块
  • SAP学习笔记 - 开发04 - Fiori UI5 开发环境搭建
  • Word文档格式设置的自动化与技巧
  • Apache SeaTunnel基础介绍
  • 南通网站建设手机版网页
  • Ajax实现一个简单的文件上传进度条
  • Python中`enumerate()`函数的作用
  • Imagination推出性能最高且具有高等级功能安全性的汽车GPU IP
  • 搜维尔科技:TechViz 虚拟会议室-多人协同混合现实协作
  • 使用切换 JDK 的方式优化部署微服务占用内存过高的问题
  • 微信小程序中数值计算的精度丢失问题
  • ”CSS 网格“二维布局系统(补充)——WEB开发系列32
  • 深度学习-目标检测(二)Fast R-CNN
  • HCIA--实验十:路由的递归特性