首页 > 其他分享 >【FastAPI】离线使用Swagger UI 或 国内网络如何快速加载Swagger UI

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

时间:2024-09-12 09:56:58浏览次数:15  
标签:Swagger FastAPI 离线 static ui UI swagger

在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。

标签:Swagger,FastAPI,离线,static,ui,UI,swagger
From: https://blog.csdn.net/h1773655323/article/details/142098108

相关文章

  • UNO WinUI 已知问题 在 XAML 条件构建里将 win 平台加入 Ignorable 将构建失败
    如果在UNO项目里面,为了进行XAML条件构建,将win平台加入到mc:Ignorable里面,将会在构建时提示XamlInternalErrorerrorWMC9999:Unexpected'NONE'inparserule'Element::=.EmptyElement(StartElementElementBody).'.错误如以下的代码,将会在构建时失败,提示X......
  • UWP WinUI3 传入 AddHandler 的 RoutedEventHandler 类型与事件所需不匹配将抛出参数
    本文记录一个UWP或WinUI3的开发过程中的问题,当开发者调用AddHandler时,所需的Handler参数类型为RoutedEventHandler类型,然而实际上正确类型是需要与所监听事件匹配才能符合预期工作,否则将抛出缺乏信息的参数异常开始之前先惯例吐槽一下,我从2015开始开发UWP应用,然而......
  • 利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)
    简介随着生成式人工智能的兴起,传统的BI报表功能已经无法满足用户对于自动化和智能化的需求,今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器–Quicksight,利用生成式AI的能力来加速业务决策,从而提高业务生产力。借助Quicksight中集成的AmazonQ的创作功能,业务分析......
  • spring如何整合druid连接池?
    spring整合druid连接池 1.新建maven项目打开IDE(比如IntelliJIDEA,Eclipse等)。选择新建项目:在IntelliJIDEA中,选择File>New>Project。在Eclipse中,选择File>New>MavenProject。选择Maven项目模板:在IntelliJIDEA中,选择Archetype选项卡,并搜索或选择一个适......
  • Unity UI 系统:Unity UI package (uGUI) 使用说明
    卡牌游戏UI系统UnityUI基础概念布局(Layout)Unity的屏幕坐标定义为左下角为(0,0),右上角为(1,1)。锚点(Anchor)锚点控制子矩形UI的边相对父矩形对应坐标轴的指定比例边的距离保持不变。AnchorMinX的值value表示:该矩形UI左边的X坐标相对父矩形UI......
  • Guitar Pro 8.2.1 Build 32中文解锁版+Soundbanks Win/Mac音色库 开心激活版
    GuitarPro8.2.1Build32开心版软件是一个受吉他手喜爱的吉他和弦、六线谱、BASS四线谱绘制、打印、查看、试听软件,它也是一款优秀的MIDI音序器,MIDI制作辅助工具,可以输出标准格式的MIDI。GP的过人之处就在于它可以直接用鼠标和键盘按标准的六线谱、四线谱进行乐谱输入......
  • MySQL原理之UUID主键分析,插入或更新语法分析
    目录1MySQL不能用UUID做主键1.1前言1.2mysql和程序实例1.2.1准备工作1.2.2开始测试1.2.3程序写入结果1.2.4效率测试结果1.3使用uuid和自增id的索引结构对比1.3.1自增id1.3.2uuid1.4自增id缺点1.5雪花算法2插入或更新2.1onduplicatekey2.1.1定义2.1.2values函数2......
  • c++ string 转换成 guid
      在C++中,将一个字符串转换为GUID(GloballyUniqueIdentifier)可以通过以下方法实现。GUID通常是128位(16字节)的标识符,以标准格式表示,例如:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。在C++中,常用的库之一是WindowsAPI,它提供了处理GUID的相关功能。这里是一个示例代码,将字符串转换......
  • HTB-Oopsie(越权漏洞,suid提权,js接口查询插件)
    前言各位师傅大家好,我是qmx_07,今天给大家讲解Oopsie靶机渗透过程信息搜集服务器开放了22SSH端口和HTTP80端口FindSomething插件介绍:帮助寻找网站的js接口,辅助渗透通过js接口查找,发现目录/cdn-cgi/login登录接口通过游客模式登录越权登录访问uploads文件......
  • 快速搭建最简单的前端项目vue+View UI Plus
    1引言‌‌Vue是一套用于构建Web前端界面的渐进式JavaScript框架。‌‌它以其易学易用、性能出色、灵活多变而深受开发者喜爱,并且与其他前端框架(如‌React和‌Angular)相比,在国内市场上受到了广泛的认可和使用。点击进入官方网站。ViewUIPlus是ViewDesign设计体系中......