网站首页 > 精选文章 / 正文
OpenAPI2向OpenAPI3的升级简单指引如下:
1. 将 Swagger 2 注解替换为 Swagger 3 注解
- 它已经包含在依赖: springdoc-openapi-starter-webmvc-ui中 .包路径是: io.swagger.v3.oas.annotations.
- 相对常用的替换对照如下:
Swagger 2 | Swagger 3 |
@Api | @Tag |
@ApiIgnore | @Parameter(hidden = true) 或 |
@ApiImplicitParam | @Parameter |
@ApiImplicitParams | @Parameters |
@ApiModel | @Schema |
@ApiModelProperty | @Schema |
@ApiModelProperty(allowEmptyValue = true) | @Schema(nullable = true) |
@ApiOperation(value = "foo", notes = "bar") | @Operation(summary = "foo", description = "bar") |
@ApiParam | @Parameter |
@ApiResponse(code = 404, message = "foo") | @ApiResponse(responseCode = "404", description = "foo") |
2. 创建ApiDocs实例
- 分组API Docs实例
升级前: Swagger2
@Bean
public Docket api1() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xx.xxx"))
.paths(PathSelectors.regex("/api1.*"))
.build()
.groupName("Group Api1")
.apiInfo(apiInfo());
}
@Bean
public Docket api2() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.xx.xxx"))
.paths(PathSelectors.regex("/api2.*"))
.build()
.groupName("Group Api2")
.apiInfo(apiInfo());
}
升级后: Swagger3
@Bean
public GroupedOpenApi api1() {
return GroupedOpenApi.builder()
.group("Group Api1")
.pathsToMatch("/api1/**")
.build();
}
@Bean
public GroupedOpenApi api2() {
return GroupedOpenApi.builder()
.group("Group Api2")
.pathsToMatch("/api2/**")
.addOpenApiMethodFilter(method -> method.isAnnotationPresent(CustomApi.class))
.build();
}
- 单个API Docs实例
单个实例时,可以直接使用配置文件结合单一实例Bean,示例如下:
springdoc.packagesToScan=com.xx.xxx, com.xx.yyy
springdoc.pathsToMatch=/api1, /api/custom/**
@Bean
public OpenAPI singleApi() {
return new OpenAPI()
.info(new Info().title("Single API")
.description("Single API sample application")
.version("v1.0.0")
.license(new License().name("MIT").url("http://com.xx.xxx")))
.externalDocs(new ExternalDocumentation()
.description("External Wiki Documentation")
.url("https://com.xx.xxx/docs"));
}
猜你喜欢
- 2025-01-23 「原创」基于CentOS环境下,LNMP+REDIS+YAF+Java环境搭建
- 2025-01-23 企业版Java核心概要简介(java企业级项目实战)
- 2025-01-23 VS2022的C/C++ 编译器选项(vs编译器配置)
- 2025-01-23 2.6 C#的常用关键字和预定义类型(c#关键字ref)
- 2025-01-23 概率分布,贝叶斯神经网络python开发程序包pyro教程和使用指南
- 2025-01-23 联网行业中的三轴加速度传感器软件设计_SSD1315设计详解
- 2025-01-23 联网行业中的OLED屏驱动_SSD1315设计详解
- 2025-01-23 腾讯云SDK如何使用,如何连接腾讯物联网开发平台。
- 2025-01-23 .NET9 - 新功能体验(一)(.net5新功能)
- 2025-01-23 SpringBoot 优雅整合Swagger Api 自动生成文档