中经常使用 SpringDoc 3.x 详解 Spring Boot 2

  • 电脑网络维修
  • 2024-11-15

大家好,我是码哥,《Redis 高手心法》作者。

SpringBoot 曾经成为 Java 开发的首选框架,当天码哥跟大家聊一聊 Spring Boot3 如何与 Swagger3 集成打造一个牛逼轰轰的接口文档。

咱们都被接口文档折磨过,前端埋怨后端的接口文档一坨屎;后端觉得写接口文档糜费期间。

每个名目都有成千盈百个接口调用,这时刻再要求人工编写接口文档并且保证文档的实时更新简直是一件无法能成功的事,所以这时刻咱们迫切须要一个工具,一个能帮咱们智能化生成接口文档以及智能更新文档的工具。

它就是 Swagger。

Swagger 的外围现实是经过定义和形容 API 的规范、结构和交互方式,以提高 API 的可读性、牢靠性和易用性,同时降落 API 开发的难度和开发者之间的沟通老本。

这里我驳回了 Swagger3.0(Open API 3.0)的方式集成到 SpringBoot。springfox-boot-start 和 springfox-swagger2 都是基于 Swagger2.x 的。

这里将引见 springdoc-openapi-ui,它是 SpringBoot 基于 Open API 3.0(Swagger3.0)

Springfox 是一套可以协助 Java 开发者智能生成 API 文档的工具,它是基于 Swagger 2.x 基础上开发的。

除了集成 Swagger 2.x,Springfox 还提供了一些额外性能,例如自定义 Swagger 文档、API 版本控制、恳求验证等等。

SpringDoc 对应坐标是 springdoc-openapi-ui,它是一个集成 Swagger UI 和 ReDoc 的接口文档生成工具,在经常使用上与 springfox-boot-starter 相似,但提供了更为灵敏、性能愈增弱小的工具。

其中除了可以生成 Swagger UI 格调的接口文档,还提供了 ReDoc 的文档渲染方式,可以智能注入 OpenAPI 规范的 JSON 形容文件,支持 OAuth2、JWT 等认证机制,并且支持全新的 OpenAPI 3.0 规范。

须要留意的是,咱们普通不会选用原生的 Swagger maven 坐标来集成 Swagger。而是经过 springdoc-openapi-ui 的 Maven 坐标。

它可以很好的和 Spring 或 SpringBoot 名目集成;这个坐标也被 Spring 社区宽泛支持和认可,并被以为是集成 Swagger UI 和 OpenAPI 规范的一个低劣选用。

在该示例中,我经常使用 Spring Boot 3.0.2 集成 Swagger 3.0。

springdoc-openapi-starter-webmvc-ui:目前最新版本是 2.6.0,实用于 Spring Boot 3.x 和 Spring Framework 6。支持 Jakarta 命名空间(例如,jakarta.validation),适宜 Spring Boot 3 的 Jakarta EE 转换。

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.6.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies>

咱们经过性能类的方式创立一个 OpenAPI 的 Bean 对象就可以创立 Swagger3.0 的文档说明。

import io.swagger.v3.oas.models.ExternalDocumentation;import io.swagger.v3.oas.models.OpenAPI;import io.swagger.v3.oas.models.info.Info;import io.swagger.v3.oas.models.info.License;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class Swagger3Config {@Beanpublic OpenAPI springShopOpenAPI() {return new OpenAPI().info(new Info().title("码哥跳动 Swagger3 详解").description("Swagger3 Spring Boot 3.0 application").version("v0.0.1").license(new License().name("Apache 2.0").url("http://springdoc.org"))).externalDocs(new ExternalDocumentation().description("swagger 3 详解").url("https://springshop.wiki.github.org/docs"));}}

OpenAPI 对象是 Swagger 中的外围类之一,用于形容整个 API 的结构和元数据。

Swagger2 和 Swagger3 经常使用的是齐全不同的两套注解,所以原本经常使用 Swagger2 相关注解的代码页须要齐全迁徙,改为经常使用 Swagger3 的注解。

@ApiOperation

@Operation

@ApiImplicitParams

@Parameters

@ApiImplicitParam

@Parameter

@ApiModelProperty

@ApiResponses

@ApiResponses

@ApiResponse

@ApiResponse

@ApiIgnore

@Hidden 或许 其余注解的 hidden = true 属性

经过以下性能来控制 swagger 的开关和访问地址:WEB 界面的显示基于解析 JSON 接口前往的结果, 假设 api-docs 封锁, swagger-ui 即使 enable 也无法经常使用。

server:port: 8013spring:application:name: magebyte-swaggerspringdoc:api-docs:enabled: true # 开启OpenApi接口path: /v3/api-docs# 自定义门路,默以为 "/v3/api-docs"swagger-ui:enabled: true # 开启swagger界面,依赖OpenApi,须要OpenApi同时开启path: /swagger-ui.html # 自定义门路,默以为"/swagger-ui/index.html"# Packages to include,多个用 , 宰割packagesToScan: zero.magebyte.magebyte.swagger.controller

须要留意的是,packagesToScan 用于指定 Controller 接口包门路。

Swagger3 用 @Schema 注解对象和字段, 以及接口中的参数类型。

@Setter@Getter@Schema(description = "照应前往数据对象")public class Result<T> implements Serializable {@Schema(title = "code",description = "照应码",format = "int32",requiredMode = Schema.RequiredMode.REQUIRED)private Integer code;@Schema(title = "msg",description = "照应信息",accessMode = Schema.AccessMode.READ_ONLY,example = "成功或失败",requiredMode = Schema.RequiredMode.REQUIRED)private String message;@Schema(title = "data", description = "照应数据", accessMode = Schema.AccessMode.READ_ONLY)private T>
  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/6413.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号