Springboot3 + knife4j(springdoc) 框架整合

前言

kinfe4j文档地址:https://doc.xiaominfo.com/docs/quick-start
springdoc文档地址:https://springdoc.org/#demos
原本使用的是springfox,自Springboot3开始,knife4j引入了springdoc。
Springboot3 + knife4j(springdoc) 框架整合_第1张图片

Maven引入

<dependency>
    <groupId>com.github.xiaoymingroupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starterartifactId>
    <version>4.3.0version>
dependency>

Springfox转换Springdoc

参考文档:https://springdoc.org/#migrating-from-springfox
Springboot3 + knife4j(springdoc) 框架整合_第2张图片

@Api → @Tag 用于类,标识这个类是swagger的资源
@ApiIgnore→@Parameter(hidden = true)或@Operation(hidden = true)或@Hidden 用于类,方法,方法参数,表示这个方法或者类被忽略
@ApiImplicitParam → @Parameter 用于方法,表示单独的请求参数
@ApiImplicitParams → @Parameters 用于方法,包含多个请求参数
@ApiModel → @Schema 用于类 ,表示对类进行说明,用于参数用实体类接收
@ApiModelProperty(hidden = true) → @Schema(accessMode = READ_ONLY) 参数实体类某个参数不显示到接口文档中
@ApiModelProperty → @Schema 用于方法,字段,表示对model属性的说明或者数据操作更改
@ApiOperation(value = “foo”, notes = “bar”) → @Operation(summary = “foo”, description = “bar”) 用于方法,表示一个http请求的操作
@ApiParam → @Parameter 用于方法,参数,字段说明,表示对参数的添加元数据(说明或是否必填等)
@ApiResponse(code = 404, message = “foo”) → @ApiResponse(responseCode = “404”, description = “foo”) 用在@ApiResponses中,一般用于表达一个错误的响应信息

配置文件

一、单模块配置文件
@Configuration
public class SwaggerConfig {
  private Info createInfo(String title, String version){
      return new Info()
              .title(title)
              .version(version)
              .description("Knife4j集成springdoc-openapi示例")
              .termsOfService("http://条款网址")
              .license(
                      new License().name("Apache 2.0")
                      .url("http://doc.xiaominfo.com"));
  }

  @Bean
  public OpenAPI customOpenAPI() {
      return new OpenAPI()
              .info(createInfo("测试", "1.0.1"));
  }

}

效果:
Springboot3 + knife4j(springdoc) 框架整合_第3张图片

二、多模块配置文件
@Configuration
public class SwaggerConfig {
    @Bean
    public GroupedOpenApi allOpenApi(@Value("${springdoc.version}") String appVersion) {
        String[] paths = {"/**"};
        return GroupedOpenApi.builder().group("总览")
        .addOpenApiCustomizer(openApi -> openApi.info(this.createInfo("后台管理系统API", appVersion)))
        .pathsToMatch(paths)
        .build();
    }

    @Bean
    public GroupedOpenApi sysOpenApi(@Value("${springdoc.version}") String appVersion) {
        String[] paths = {"/sys/**"};
        return GroupedOpenApi.builder().group("系统管理")
        .addOpenApiCustomizer(openApi -> openApi.info(this.createInfo("系统管理API", appVersion)))
        .pathsToMatch(paths)
        .build();
    }

    @Bean
    public GroupedOpenApi dataOpenApi(@Value("${springdoc.version}") String appVersion) {
        String[] paths = {"/data/**"};
        return GroupedOpenApi.builder().group("数据管理")
        .addOpenApiCustomizer(openApi -> openApi.info(this.createInfo("数据管理API", appVersion)))
        .pathsToMatch(paths)
        .build();
    }

    private Info createInfo(String title, String version){
        return new Info()
        .title(title)
        .version(version)
        .description("Knife4j集成springdoc-openapi示例")
        .termsOfService("http://条款网址")
        .license(
            new License().name("Apache 2.0")
            .url("http://doc.xiaominfo.com"));
    }

}

效果:
Springboot3 + knife4j(springdoc) 框架整合_第4张图片

Auth3.0登录校验

待续…

你可能感兴趣的:(spring,boot,spring,boot)