【日常总结】Swagger-ui 导入 showdoc (优雅升级Swagger 2 升至 3.0)

news/2024/11/26 23:30:39/

一、场景

环境:

二、存在问题

三、解决方案

四、实战 - 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>

 

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


http://www.ppmy.cn/news/1236537.html

相关文章

源码编译CEF(branch=6045)+mp4+mp3笔记

接触Chromium已经过去多年了&#xff0c;一直都依赖别人编译的库&#xff0c;最近想自己整一个&#xff0c;所以有了这篇笔记。 环境要求&#xff1a;WIN10&#xff0c;内存16G&#xff0c;固态硬盘空间200G,VS2022&#xff0c;科学上网&#xff08;具体配置我这边不需要&#…

js 获取地址栏参数 封装方法

下面是一个 JavaScript 函数&#xff0c;用于获取 URL 中的参数并以对象形式返回&#xff1a; //获取地址栏参数(返回对象)function getUrlParams() {var urlParams {};var queryString window.location.search;if (queryString) {queryString queryString.replace(/^\?/,…

10个容易被忽视的FastAPI实用功能

大家好&#xff0c;FastAPI是一种现代、高性能的Python Web框架&#xff0c;用于构建Web应用程序和API。它基于Python的异步编程库asyncio和await语法&#xff0c;以及类型注解和自动文档生成等特性&#xff0c;提供了快速、易用和可靠的开发体验&#xff0c;接下来本文将介绍1…

Quartz .Net 的简单使用

参考了&#xff1a;c# .net framework 4.5.2 , Quartz.NET 3.0.7 - runliuv - 博客园 (cnblogs.com) https://www.cnblogs.com/personblog/p/11277527.html&#xff0c; Quartz.NET 作业调度&#xff08;一&#xff09;&#xff1a;Test - 简书 自己要轮询的任务&#xff1a…

完美解决:yum -y install nginx 报出 没有可用软件包 nginx。错误:无须任何处理

目录 一、问题&#xff1a; 二、原因&#xff1a; 三、解决方法&#xff1a; 一、问题&#xff1a; [rootlocalhost ~]# yum -y install nginx 已加载插件&#xff1a;fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.bfsu.edu.cn * extras: m…

Nodejs JavaScript 字符串加密

情景 问题的场景是这样的&#xff1a;我们需要在浏览器cookie中存储用户名&#xff0c;但又不想直接明文存储&#xff0c;所以对它进行了简单的加密存储。 因为是简单的加密&#xff0c;目的只是不希望明文存储。我们使用了Base64 编码&#xff0c;使得cookie里的存储不可只读…

Laravel 安装(笔记一)

目录 第一步、Laravel 一般使用 composer安装 第二步、使用composer安装项目 第三步、配置环境 第四步、访问域名&#xff0c;安装完成 Laravel 官网 l​​​​​​​Installation - Laravel 中文网 为 Web 工匠创造的 PHP 框架 第一步、Laravel 一般使用 composer安装 如…

【Exception】Error: Dynamic require of “path“ is not supported

Talk is cheap, show me the code. 环境 | Environment kversionOSwindows 11Node.jsv18.14.2npm9.5.0vite5.0.0vue3.3.8 报错日志 | Error log >npm run dev> app10.0.0 dev > viteERROR failed to load config from C:\code\frontend\app1\vite.config.js …