SpringBoot整合Knife4j

1.Swagger 介绍

  • Swagger是一种基于OpenAPI规范的API文档生成工具,它可以根据Java代码中的注解自动生成API接口文档,并提供UI界面进行在线测试和调试。

  • Swagger为开发人员提供了更加方便、直观的API管理方式,有助于提升API的可读性和可维护性。

  • Swagger的主要特点包括:

1、自动生成API文档:通过在Java代码中添加Swagger注解,Swagger能够自动地解析API接口的参数、响应等信息,并生成相应的API文档。

2、在线测试接口:Swagger提供了UI界面,可以方便地进行API接口的测试和调试,无需单独使用HTTP客户端来测试接口。

3、支持多种语言和框架:Swagger不仅支持Java语言和Spring框架,还支持多种其他语言和框架,如PHP、Python、Go等。

4、扩展性强:Swagger提供了多种扩展机制和插件,可以满足各种项目的需要,如集成OAuth2、自定义UI等。

Swagger提供的UI界面相比于另外一款Api文档生成工具Knife4j较为简陋。

2.Knife4j 介绍

  • Knife4j是一种基于Swagger构建的增强工具,它在Swagger的基础上增加了更多的功能和扩展,提供了更加丰富的API文档管理功能。相比于原版Swagger,Knife4j的主要特点包括:

1、更加美观的UI界面:Knife4j通过对Swagger UI的修改和优化,实现了更加美观、易用的UI界面,提升了开发人员的体验感。

2、支持多种注解配置方式:除了支持原版Swagger的注解配置方式外,Knife4j还提供了其他几种注解配置方式,方便开发人员进行不同场景下的配置。

3、提供多种插件扩展:Knife4j提供了多种插件扩展,如knife4j-auth、knife4j-rate-limiter等,可以满足不同项目的需求。

4、集成Spring Boot Starter:Knife4j发布了spring-boot-starter-knife4j,可以实现更加便捷的集成,并支持配置文件中的动态属性调整。

3.Knife4j 使用

1.依赖

    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
        <version>4.1.0</version>
    </dependency>

2.配置类

在模块中模添加knife4j所需要的配置类

@Configuration
public class Knife4jConfig {
   

    @Bean
    public GroupedOpenApi adminApi() {
         // 创建了一个api接口的分组
        return GroupedOpenApi.builder()
                .group("admin-api")         // 分组名称
                .pathsToMatch("/admin/**")  // 接口请求路径规则
                .build();
    }

    /***
     * @description 自定义接口信息
     */
    @Bean
    public OpenAPI customOpenAPI() {
   

        return new OpenAPI()
                 .info(new Info()
                 .title("接口文档")
                 .version("1.0")
                 .description("接口文档")
                 .contact(new Contact().name("zuozhe"))); // 设定作者
    }

}

访问:http://ip:port/doc.html,即可看到类似下面的界面。

在这里插入图片描述

2.常用注解

@Tag: 用在controller类上,对controller进行说明
@Operation: 用在controller接口方法上对接口进行描述
@Parameters:用在controller接口方法上对单个参数进行描述
@Schema: 用在实体类和实体类属性上,对实体类以及实体类属性进行描述

示例

@Data
@Schema(description = "用户登录请求参数")
public class LoginDto {
   

    @Schema(description = "用户名")
    private String userName ;

    @Schema(description = "密码")
    private String password ;

    @Schema(description = "提交验证码")
    private String captcha ;

    @Schema(description = "验证码key")
    private String codeKey ;

}
@Tag(name = "首页接口")
public class IndexController {
   


    @Operation(summary = "用户登录")
    public Result<LoginVo> login(@RequestBody LoginDto loginDto) {
   
        ...
    }

    @Operation(summary = "用户退出")
    @Parameters(value = {
   
            @Parameter(name = "令牌参数" , required = true)
    })
    @GetMapping(value = "/logout")
    public Result logout(@RequestHeader(value = "token") String token) {
   
        ...
    }

}

相关推荐

  1. Springboot整合Knife4j接口文档

    2024-01-09 18:06:01       7 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 18:06:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 18:06:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 18:06:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 18:06:01       18 阅读

热门阅读

  1. spring中的单例模式

    2024-01-09 18:06:01       51 阅读
  2. 使用ss代替netstat

    2024-01-09 18:06:01       38 阅读
  3. KY23 最小花费 DP

    2024-01-09 18:06:01       39 阅读
  4. 算法:删除字符串中的所有相邻重复项

    2024-01-09 18:06:01       38 阅读
  5. Redis面试题4

    2024-01-09 18:06:01       30 阅读
  6. MySQL第五战:常见面试题(下)

    2024-01-09 18:06:01       35 阅读
  7. 秒杀业务

    2024-01-09 18:06:01       34 阅读