已解决
SpringBoot3.x最简集成SpringDoc-OpenApi
来自网友在路上 174874提问 提问时间:2023-11-20 12:53:57阅读次数: 74
最佳答案 问答题库748位专家为你答疑解惑
为什么使用SpringDoc
在SpringBoot低版本时一般使用Swagger扫描接口生成Json格式的在线文档,然后通过swagger-ui将Json格式的文档以页面形式展示文档。可惜遗憾的是swagger更新到3.0.0版本(springfox)后不更新了。
SpringBoot3.x以后需要的JDK版本最低为Java17,而Java17的包名在之前的版本中从javax更改为jakarta,导致swagger在SpringBoot3.x版本中完全无法使用,而SpringDoc不同于swagger,在SpringBoot出了3版本以后很快就兼容升级了,换句话说SpringDoc是SpringBoot全系列都支持的。
SpringDoc支持的内容
- OpenAPI 3的标准实现
- Spring-boot v3 (Java 17 & Jakarta EE 9)
- JSR-303支持, 专门针对
@NotNull
,@Min
,@Max
, and@Size
. - Swagger-ui支持
- OAuth2 认证流程
- 本机镜像打包支持(GraalVM native images)
最简集成SpringDoc
文档地址
- 创建SpringBoot项目
- 引入SpringDoc依赖
<!-- 适用于webmvc的SpringDoc依赖 -->
<dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.2.0</version>
</dependency>
该依赖包含swagger-ui和springdoc-openapi-starter-webmvc-api依赖,无需引入其它依赖即可生效。
- 创建一个测试接口,添加SpringDoc的注解以生成在线文档
package com.example.controller;import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 示例接口** @author vains*/
@RestController
@RequestMapping("/example")
@Tag(name = "示例接口", description = "提供示例内容展示SpringDoc集成效果")
public class ExampleController {@GetMapping("/test01")@Operation(summary = "无参查询接口", description = "hello")public String test01() {return "Hello Spring doc";}@GetMapping("/test02")@Parameter(name = "test02", description = "url参数")@Operation(summary = "查询参数示例", description = "原样返回入参")public String test02(String test02) {return test02;}@GetMapping("/test03/{test03}")@Parameter(name = "test03", description = "url参数")@Operation(summary = "url参数示例", description = "原样返回入参")public String test03(@PathVariable String test03) {return test03;}}
- 启动项目后访问提供的接口地址
http://127.0.0.1:8080/swagger-ui/index.html
效果图如下
Springfox和SpringDoc注解对照表
官方文档
@Api
@Tag
描述接口信息@ApiIgnore
@Parameter(hidden = true)
或 @Operation(hidden = true)
或 @Hidden
隐藏字段@ApiImplicitParam
@Parameter
描述单个参数@ApiImplicitParams
@Parameters
描述多个参数@ApiModel
@Schema
描述数据模型@ApiModelProperty(hidden = true)
@Schema(accessMode = READ_ONLY)
描述属性,可隐藏@ApiModelProperty
@Schema
描述属性@ApiOperation(value = "foo", notes = "bar")
@Operation(summary = "foo", description = "bar")
描述接口操作,包括标题和注释@ApiParam
@Parameter
描述接口方法参数@ApiResponse(code = 404, message = "foo")
@ApiResponse(responseCode = "404", description = "foo")
描述接口响应信息,包括状态码和消息
附录
- SpringDoc官网
- 代码仓库:Gitee、Github
查看全文
99%的人还看了
相似问题
- MeterSphere | 接口测试请求体中,int类型的入参实现动态化变量
- postman设置接口关联这样做,薪资直接涨3k
- 接口自动化中cookies的处理技术
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- 【实战详解】如何快速搭建接口自动化测试框架?Python + Requests
- 一次显著的接口性能优化,从10s优化到0.9s
- 做接口自动化遇到的20个难点,记录下我是如何解决的!
- 全网最全jmeter接口测试/接口自动化测试看这篇文章就够了:跨线程组传递jmeter变量及cookie的处理
- 微信小程序发货信息录入接口 错误上传时间非法,请按照 RFC 3339 格式填写?
- 京东商品详情数据接口【京东API接口开发系列】,监控京东价格走势,接口代码示例,可高并发批量获取
猜你感兴趣
版权申明
本文"SpringBoot3.x最简集成SpringDoc-OpenApi":http://eshow365.cn/6-40351-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!