【日常总结】Swagger-ui 导入 showdoc (优雅升级Swagger 2 升至 3.0)
一、场景
环境:
二、存在问题
三、解决方案
四、实战 - Swagger 2 升至 3.0 (Open API 3.0)
Stage 1:引入Maven依赖
Stage 2:Swagger 配置类
Stage 3:访问 Swagger 3.0
Stage 4:获取 json,保存为 swagger.json
Stage 5:showdoc 中导入 swagger.json
Stage 6:导入效果
一、场景
-
公司需要将 swagger-ui 中的接口导入到 showdoc 中
-
思路 :获取 swagger.json 并导入到 showdoc 中 (http://ip:port/v2/api-docs 获取json)
环境:
-
Spring boot : 2.5.4
-
Swagger ui : 2.9.2
-
JDK : 1.8
二、存在问题
-
http://ip:port/v2/api-docs 报错无法获取完整的JSON

三、解决方案
-
方案一:升至Swagger 3,获取json,保存为xxx.json,再导入 showdoc中 (适合全量导入)
-
方案二:集成 knife4j ,单个接口json,保存为xxx.json,再导入 showdoc中(适合部分导入 + 前端调试)
四、实战 - Swagger 2 升至 3.0 (Open API 3.0)
Stage 1:引入Maven依赖
<!--swagger3--><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency> Stage 2:Swagger 配置类
-
注意: .title("XPH- iot 接口文档")
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;// 自定义swagger3文档信息
@Configuration
@ConditionalOnProperty(value = "springfox.documentation.enabled", havingValue = "true", matchIfMissing = true)
@Slf4j
public class Swagger3Config extends WebMvcConfigurationSupport {@Value(value = "${host:localhost}")private String host;@Value("${server.port:8005}")private String port;@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {log.info("http://{}:{}/swagger-ui.html", host, port);log.info("http://localhost:{}/swagger-ui.html", port);log.info("http://localhost:{}/swagger-ui/index.html", port);log.info("http://localhost:{}/doc.html", port);return new ApiInfoBuilder().title("XPH- iot 接口文档").description("更多请咨询").contact(new Contact("lijiong", "https://", "xxx@")).version("1.0.0").build();}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");//swagger 2registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");//swagger 3registry.addResourceHandler("/swagger-ui/**").addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/");registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");super.addResourceHandlers(registry);}
}
Stage 3:访问 Swagger 3.0
-
https://localhost:port/swagger-ui/index.html

Stage 4:获取 json,保存为 swagger.json


Stage 5:showdoc 中导入 swagger.json
-
全量导入,会自动生成一个项目名为:swaggerUI title的项目


Stage 6:导入效果

相关文章:
【日常总结】Swagger-ui 导入 showdoc (优雅升级Swagger 2 升至 3.0)
一、场景 环境: 二、存在问题 三、解决方案 四、实战 - Swagger 2 升至 3.0 (Open API 3.0) Stage 1:引入Maven依赖 Stage 2:Swagger 配置类 Stage 3:访问 Swagger 3.0 Stage 4:获取 js…...
OpenCV C++ 图像 批处理 (批量调整尺寸、批量重命名)
文章目录 图像 批处理(调整尺寸、重命名)图像 批处理(调整尺寸、重命名) 拿着棋盘格,对着相机变换不同的方角度,采集十张以上(以10~20张为宜);或者棋盘格放到桌上,拿着相机从不同角度一通拍摄。 以棋盘格,第一个内焦点为坐标原点,便于计算世界坐标系下三维坐标; …...
RT-DETR手把手教程,注意力机制如何添加在网络的不同位置进行创新优化
💡💡💡本文独家改进:本文首先复现了将EMA引入到RT-DETR中,并跟不同模块进行结合创新;1)Rep C3结合;2)直接作为注意力机制放在网络不同位置;3)高效…...
qt treeview 删除节点
Qt 中,要删除 QTreeView 中的节点,可以通过操作其模型(QAbstractItemModel)来实现。以下是一个简单的示例,展示如何从 QTreeView 中删除节点。 假设你有一个 QTreeView,它使用了 QStandardItemModel 作为模…...
【单词】【2019】
...
Java自动化驱动浏览器搜索稻香
下载最新的Chrome浏览器 查看chrome版本,在浏览器地址栏输入:chrome://version/ 下载对应的浏览器驱动,将其放到一个目录中,我放到了D:/chromedriver-win64 导入对应的依赖【注意:不要导入最新的版本,最…...
php聊天室通讯系统常用的接口对接函数 curl、file_get_contents()、WebSocket、消息队列
方法有: 1、HTTP请求,可以通过PHP的curl库或者file_get_contents()函数发送HTTP请求来与聊天室接口进行通信; 2、WebSocket协议,可以使用PHP的WebSocket库或者第三方库来与聊天室接口进行对接; 3、使用这些SDK或者包装…...
SQL基础理论篇(九):存储过程
文章目录 简介存储过程的形式定义一个存储过程使用delimiter定义语句结束符存储过程中的三种参数类型流控制语句 存储过程的优缺点参考文献 简介 存储过程Stored Procedure,SQL中的另一个重要应用。 前面说的视图,只能勉强跟编程中的函数相似ÿ…...
申银万国期货通过ZStack Cube信创超融合一体机打造金融信创平台
信创是数字中国建设的重要组成部分,也是数字经济发展的关键推动力量。作为云基础软件企业,云轴科技ZStack产品矩阵全面覆盖数据中心云基础设施,ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级,是其中唯一兼容四种…...
SquareCTF-2023 Web Writeups
官方wp:CTFtime.org / Square CTF 2023 tasks and writeups sandbox Description: I “made” “a” “python” “sandbox” “”“” nc 184.72.87.9 8008 先nc连上看看,只允许一个单词,空格之后的直接无效了。 flag就在当…...
Docker-compose 安装mysql8
1、编写docker-compose.yml文件 version: 3.8 services:mysql:container_name: mysql8image: mysql:8.0.18restart: alwaysports:- 3306:3306privileged: truevolumes:- $PWD/log:/var/log/mysql- $PWD/conf/my.cnf:/etc/mysql/my.cnf- $PWD/data:/var/lib/mysqlenvironment:M…...
分布式锁实现对比
1、对比 tairzookeper性能高 低可靠性低 高 2、zookeper实现分布式锁 特点: Zookeeper能保证数据的强一致性,用户任何时候都可以相信集群中每个节点的数据都是相同的。 加锁 客户端在ZooKeeper一个特定的节点下创建临时顺序节点&…...
Ubuntu 系统上使用 QQ 邮箱的 SMTP 服务器发送邮件,msmtp(已验证)
安装 msmtp sudo apt-get update sudo apt-get install msmtp2 .配置 msmtp nano ~/.msmtprcdefaults auth on tls on tls_starttls on tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.logaccount qq host …...
笔记54:门控循环单元 GRU
本地笔记地址:D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章:动手学深度学习~现代循环神经网络 a a a a a a a...
数据仓库高级面试题
数仓高内聚低耦合是怎么做的 定义 高内聚:强调模块内部的相对独立性,要求模块内部的元素尽可能的完成一个功能,不混杂其他功能,从而使模块保持简洁,易于理解和管理。 低耦合:模块之间的耦合度要尽可能的…...
【OpenGauss源码学习 —— 列存储(ColumnTableSample)】
执行算子(ColumnTableSample) 概述ColumnTableSample 类ColumnTableSample::ColumnTableSample 构造函数ColumnTableSample::~ColumnTableSample 析构函数ExecCStoreScan 函数ColumnTableSample::scanVecSample 函数ColumnTableSample::getMaxOffset 函数…...
【开源】基于JAVA的校园二手交易系统
项目编号: S 009 ,文末获取源码。 \color{red}{项目编号:S009,文末获取源码。} 项目编号:S009,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 二手商品档案管理模…...
C 语言结构体(struct)
C 语言结构体(struct) 在本教程中,您将学习C语言编程中的结构类型。您将借助示例学习定义和使用结构。 在C语言编程中,有时需要存储实体的多个属性。 实体不必仅具有一种类型的所有信息。 它可以具有不同数据类型的不同属性。 C 数组允许定义可存储相…...
Linux:zip包的压缩与解压
压缩文件: zip命令 语法: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 补充说明:zi…...
Linux 时区设置
对于服务器来说,linux的时区影响着运行之上的数据库和后端程序的时区 应该和数据库和后端及其他程序的时区保持一致 其他相关时区的设置 pgsql时区设置: php时区设置: 1.显示当前的时间和时区 date结果类似下面,图中显示的是ut…...
CLion配置Qt开发踩坑实录:解决CMake找不到Qt、MSVC环境变量、MinGW链接失败等一堆问题
CLionQt开发环境配置全攻略:从环境搭建到疑难解析 1. 开发环境搭建前的关键考量 在Windows平台上使用CLion进行Qt开发,首先需要明确几个核心组件的选择与搭配。不同于其他IDE,CLion基于CMake构建系统,这为项目管理和跨平台开发带来…...
CANN/asc-devkit带进位加法API
AddC 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann/…...
AI驱动的物联网数据质量评估与增强:从原理到工程实践
1. 项目概述:当物联网数据“生病”了,我们怎么办?在物联网的世界里,数据就是血液。传感器、摄像头、智能设备每时每刻都在产生海量的数据流,驱动着从智能家居的自动调节到工业产线的预测性维护。但不知道你有没有遇到过…...
终极Windows热键冲突检测指南:3步快速定位占用程序
终极Windows热键冲突检测指南:3步快速定位占用程序 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经按…...
终极解放:AlienFX-Tools如何让Alienware设备重获新生
终极解放:AlienFX-Tools如何让Alienware设备重获新生 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否曾对Alienware设备的原厂控制软…...
MyTV-Android深度解析:Android 4.x系统兼容性挑战与架构设计攻坚
MyTV-Android深度解析:Android 4.x系统兼容性挑战与架构设计攻坚 【免费下载链接】mytv-android 使用Android原生开发的视频播放软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android MyTV-Android是一款专为老旧Android设备优化的电视直播应用&a…...
LobeHub 这玩意儿,到底香在哪?
先说结论:LobeHub 是目前我在前端圈里看到的,最接近“智能体操作系统”的一个东西。不是吹,是真的好用到让我有点慌。事情是这样的前阵子我在搞一个自动化工单系统,本来打算自己撸一套 Agent 调度逻辑,结果写到第三天我…...
Claude Code 用户如何快速切换至 Taotoken 稳定服务
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code 用户如何快速切换至 Taotoken 稳定服务 对于使用 Claude Code 进行开发的工程师而言,服务稳定性是保障开发…...
CANN/runtime算子信息订阅API
# 19-03 订阅算子信息 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述算子信息订阅接口,用于订阅模型中算子的执行信息(类型、名称、耗时等)…...
【2026年最新】网安学习路线!最详细没有之一!看了这么多分享网安学习路线的一个详细的都没有!
零基础小白,到就业!入门到入土的网安学习路线! 在各大平台搜的网安学习路线都太粗略了。。。。看不下去了! 我把自己报班的系统学习路线,整理拿出来跟大家分享了! 建议的学习顺序: 一、网络安…...
