MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

Api文档之OpenAPI2向OpenAPI3升级 — 2

2025-01-23 17:24 huorong 精选文章 4 ℃ 0 评论

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) 或
@Operation(hidden = true) 或
@Hidde

@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"));
  }

Tags:apiimplicitparams注解用法

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言