【日常总结】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 ui2.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>
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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;

    @Bean
    public 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();
    }

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        //swagger 2
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        //swagger 3
        registry.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);
    }
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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:导入效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/172687.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用sonar对webgoat进行静态扫描

安装sonar并配置 docker安装sonarqube&#xff0c;sonarQube静态代码扫描 - Joson6350 - 博客园 (cnblogs.com) 对webgoat进行sonar扫描 扫描结果 bugs Change this condition so that it does not always evaluate to "false" 意思是这里的else if语句不会执行…

3.9-Dockerfile实战

这一节介绍怎么将python程序打包成一个image&#xff0c;然后运行为一个container。 首先&#xff0c;创建/home/python/目录 mkdir /home/python/ 然后创建app.py文件。 vim app.py app.py文件的内容如下&#xff1a; from flask import Flaskapp Flask(__name__)app.route(…

【Linux】 find命令使用

find find命令是一种通过条件匹配在指定目录下查找对应文件或者目录的工具。匹配的条件可以是文件名称、类型、大小、权限属性、时间戳等。find命令还可以配合相关命令对匹配到的文件作出后续处理。 语法 find [路径...] [表达式] [path...]为需要查找文件所指定的路径。如果…

linux 开发板以太网通过Ubuntu上外网方法

在开发板嵌入式设备&#xff0c;有一个mgbe网卡&#xff0c;用网线与连接soc的网卡&#xff0c;和外接网卡&#xff0c;将网卡usb接口插入电脑&#xff0c;选择接入到Ubuntu系统 在Ubuntu将能识别到这个外接网卡&#xff0c;这样就可以通过Ubuntu和soc通讯了&#xff0c; 如下…

澳洲的猫罐头怎么样呢?几款我自己亲自喂养过的优质猫罐头推荐

一款优质的猫罐头&#xff0c;必须满足三个要点&#xff1a;完整又均衡的营养配方、新鲜又优质的原料、以及科学可靠的生产工艺。 猫罐头的三个要素&#xff0c;一个都不能少。配方不均衡&#xff0c;营养就不足&#xff1b;原料不新鲜&#xff0c;生产出来的猫罐头就不优质&a…

composer切换全局镜像源的方法

composer 默认配置中的镜像地址为国外的&#xff0c;在下载一些依赖包的时候会感觉很慢。当然国内也有很多composer镜像地址的&#xff0c;比如阿里云&#xff0c;腾讯云等。下面的博文73so博客就和大家说说&#xff0c;如何将composer的默认镜像改为国内镜像源的方法。 compo…

JAVA项目测试----用户管理系统

一)项目简介: 用户管理系统是依据于前后端分离来实现的&#xff0c;是基于Spring SpringBoot Spring MVC&#xff0c;SpringAOP&#xff0c;MyBatis等框架来实现的一个用户管理网站&#xff0c;并且已经部署到了云服务器上, 目前的用户管理系统实现了超级管理员的注册功能&…

云工作流 CloudFlow 重磅发布,流程式开发让云上应用构建更简单

云布道师 为了让企业和开发者更快速、便捷地进行云上开发&#xff0c;阿里云重磅发布云工作流&#xff08;CloudFlow&#xff09;&#xff0c;它是一款强大的面向开发者的流程编排开发工具&#xff0c;全托管、高并发、高可用&#xff0c;帮助用户简化和自动化复杂的云上业务流…

【字符编码系列二】GB2312编码

说明 GB2312是第一个汉字编码国家标准 GB 2312 标准由中国国家标准总局 1980 年发布&#xff0c;GB 即国标&#xff0c;共收录 6763 个汉字&#xff0c;其中一级汉字 3755 个&#xff0c;二级汉字 3008 个。 GB 2312 的出现&#xff0c;基本满足了汉字的计算机处理需要&#x…

手机弱网测试工具:Charles

我们在测试app的时候&#xff0c;需要测试弱网情况下的一些场景&#xff0c;那么使用Charles如何设置弱网呢&#xff0c;请看以下步骤&#xff1a; 前提条件&#xff1a; 手机和电脑要在同一局域网内 Charles连接手机抓包 一、打开Charles&#xff0c;点击代理&#xff0c;…

Prometheus监控mysql nginx tomcat 黑盒监控

部署consul_exporter https://github.com/prometheus/consul_exporter/releases/download/v0.9.0/consul_exporter-0.9.0.linux-amd64.tar.gz 注册 ootubuntu20:~# cat consul_export.json rootubuntu20:~# cat consul_export.json {"services": [{"id"…

LR学习笔记——基本面板

文章目录 面板介绍色彩调整区域明暗调整区域纹理及质感色彩饱和 面板介绍 面板如上图所示 基本可分为几个板块&#xff1a;色彩、明暗、纹理及质感、色彩饱和 色彩调整区域 色温&#xff1a;由蓝色和黄色控制色调&#xff1a;由绿色和洋红控制 互补色&#xff1a;蓝色对黄色&…

Leetcode2938. 区分黑球与白球

Every day a Leetcode 题目来源&#xff1a;2938. 区分黑球与白球 解法1&#xff1a;贪心 把 ‘0’ 挪到相应的位置。 类似于冒泡排序的思想&#xff0c;把 ‘0’ 挪到相应的位置。 示例&#xff1a; 代码&#xff1a; /** lc appleetcode.cn id2938 langcpp** [2938] 区…

【CSH 入门基础 9 -- 输出 csh 脚本中每一句命令】

文章目录 输出csh脚本中每一句命令 输出csh脚本中每一句命令 在 csh 或 tcsh 脚本中&#xff0c;如果你想要输出脚本中的每一句执行&#xff0c;你可以在脚本的开头使用 -v&#xff08;verbose&#xff09;选项。这个选项会使得 shell 在执行命令前先打印出来。 要在脚本中使…

QT打包圆心识别

圆心点识别QT界面封装 最近在练习QT相关内容&#xff0c;找了个相关功能集成了下&#xff0c;主要是为了熟悉各个组件&#xff0c;功能主要是进行圆心识别。 主要涉及的QT功能点&#xff1a; 1.日志可视化 2.按钮及各类参数添加组件 3.水印添加及图片可视化 4.许可添加 5.主线…

电脑监控系统是如何支持远程监控的?

电脑监控系统支持远程监控的方式有多种&#xff0c;以下是其中几种常见的方法&#xff1a; 远程桌面协议 这是一种常见的远程监控协议&#xff0c;它允许用户通过互联网远程访问和控制被监控的电脑。RDP是一种加密的协议&#xff0c;可以保证数据传输的安全性和隐私性。使用RD…

2024湖南师范大学计算机考研分析

24计算机考研|上岸指南 湖南师范大学 湖南师范大学创建于1938年&#xff0c;位于历史文化名城长沙&#xff0c;是国家“211工程”重点建设大学、国家“双一流”建设高校、教育部普通高等学校本科教学工作水平评估优秀高校。学校拥有6个“十二五”国家重点学科、21个博士学位授…

武汉站--ChatGPT/GPT4科研技术应用与AI绘图及论文高效写作

2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

jbase仪器接口设计

jbase的计划有借助虚拟M来实现连仪器&#xff0c;之前陆续写了些TCP逻辑&#xff0c;今天终于整理完成了仪器设计。首先用java的cs程序测试TCP的服务和客户端。 javafx的示例加强 package sample;import javafx.application.Application; import javafx.event.EventHandler; …