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

【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 StaticFilesapp = 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.lryc.cn/news/434413.html

相关文章:

  • Linux:从入门到放弃
  • SVM 监督学习
  • 奖励模型的训练
  • Ubuntu22.04之禁止内核自动更新(二百六十八)
  • kaggle题-房价预测(Pytorch),手把手教,全文代码解释
  • PulseSensor心率传感器详解(STM32)
  • NISP 一级 | 3.1 网络基础知识
  • 模拟网络丢包常用方法以及工具
  • ABC 370 E - Avoid K Partition
  • C++: set与map容器的介绍与使用
  • 单片机-STM32 看门狗(八)
  • iOS 18.1将上线新功能,可惜这波国内的小伙伴无缘了
  • MySQL中DML操作(二)
  • LLMs技术 | 整合Ollama实现本地LLMs调用
  • 【C-实践】文件服务器(3.0)
  • LeetCode 2181.合并零之间的节点
  • 千益畅行,共享旅游卡,引领旅游新潮流
  • K均值聚类
  • 【Ubuntu】安装常用软件包
  • 探索全光网技术 | 全光网产品解决方案整理-(宇洪科技)
  • 资料分析(2)
  • 百元以下蓝牙耳机性价比之王品牌?四大高能性价比机型推荐
  • 考场考生行为检测数据集 7000张 带标注 voc yolo
  • 深度学习算法,该如何深入,举例说明
  • 舵机的原理及应用
  • Nacos与Eureka--微服务注册中心
  • Android 调试桥——ADB
  • 闲鱼放弃成为淘宝复刻版了吗?上线学生专属交易交流版块“学生鱼”频道
  • 【学习笔记11】如何找到twitter中自己的cookie?
  • 新办建筑智能化专项乙级设计资质,郑州企业需要达到哪些要求?