knife4j文档入门指南

前言与介绍

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。而knife4j是集Swagger2 和 OpenAPI3 为一体的增强解决方案,增强扩展有了基于Springfox框架+Swagger2规范的自动注入的starter,可以说是非常方便。

简单来说,knife4j能方便后端程序员实现一份提供前端程序员或者其他开发者调用的接口文档,在接口更新后能及时更新,避免文档书写不及时带来交流的成本。当然,写一个好看的文档也是愉悦大家的心情。这是我选择knife4j而不是swagger的重要原因,swagger-ui实在充斥这一种老旧ui的感觉。

当然,我永远推荐大家参照官网,毕竟文章只是给出了一个可行的解决方案而不是一种思维,这里留下官网的地址Knife4j · 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j (xiaominfo.com)与Github源码地址xiaoymin/knife4j: Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution (github.com)

简单小目录
  • 导入依赖

  • 相关配置

  • 使用注解

  • 效果展示

导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <!--保持版本与Knife4j v4.0的版本一致,避免jar包冲突,因为Knife4j-v4.0.0版本依赖的springdoc版本是1.6.9 -->
            <version>1.6.9</version>
        </dependency>
        <dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-core</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
            <version>4.0.0</version>
        </dependency>

这里要注意knife4j与springdoc的版本问题,另外knife4j的增强功能对springboot的版本也有对应关系。本文只是简单介绍knife4j并不做深入研究使用knife4j的增强功能,所以就不放它们之间的对应版本了,如果将来用到了我会来更新的。

相关配置

配置类SpringDocConfig代码如下:

@Configuration
public class SpringDocConfig {
​
    @Bean
    public OpenAPI mallTinyOpenAPI() {
        return new OpenAPI()
                .info(new Info().title("EasyDemo-API接口文档")
                        .description("EasyDemo-API接口文档,随便看看不要当真")
                        .contact(new Contact().name("被风吹散").email("601079657@QQ.com"))
                        .version("v0.0.2"));
    }
}

简单的信息填充,new了一个OpenAPI然后new一个Info填入相关信息,例如title、description等。

另外有些配置也可以在application.yml文件中增加,不过不加也没关系,下面给出我的示例。

# springdoc-openapi项目配置
springdoc:
  swagger-ui:
    path: /swagger-ui.html
    tags-sorter: alpha
    operations-sorter: alpha
    enabled: true
  api-docs:
    path: /v3/api-docs
    enabled: true
# knife4j的增强配置,不需要增强可以不配
knife4j:
  enable: false

使用注解

以下注解均来自swagger-core依赖,可以参照源码学习更多功能。

接口-Controller层注解
注解目标参数说明
@Tagname、description等将这个类增加到swagger文档中
@Operation方法summary、description、method等书写具体接口的说明
@ApiResponses方法/定义多个返回码,包含@ApiResponse注解
@ApiResponse方法responseCode、description等定义一个返回码
@Tag(name = "UserController", description = "EasyDemo-用户服务-API接口")
@RestController
@RequestMapping("/api/user")
public class UserController {
​
    @Resource
    UserService userService;
​
    @Operation(summary = "login", description = "用户登录接口,使用账密登录", method = "POST")
//    @ApiResponses(//为单个接口配置多个返回码描述
//            @ApiResponse(responseCode = "400",description = "Bad Request")
//    )
    @PostMapping("/login")
    public Result login(@RequestBody LoginParam param) {
        String account = param.getAccount();
        String password = param.getPassword();
        User logined = userService.login(account, password);
        if (logined != null) {
            return Result.success(logined);
        }
        return Result.fail(501, "登录失败!");
    }
​
    @Operation(summary = "register", description = "用户注册接口,采用账号密码注册", method = "POST")
    @PostMapping("/register")
    public Result register(@RequestBody LoginParam param) {
        String account = param.getAccount();
        String password = param.getPassword();
        try {
            userService.register(account, password);
        } catch (Exception e) {
            System.out.println(e);
            return Result.fail(502, "注册失败!");
        }
        return Result.success();
    }
}
实体类-model层注解
注解目标参数说明
@Schema类和参数description,required等定义类或参数的文档
@Schema(description = "登录参数类")
@Data
public class LoginParam {
​
    @Schema(description = "登录的账号",required = true)
    private String account;
​
    @Schema(description = "输入的密码",required = true)
    private String password;
}

效果展示

输入localhost:8080/doc.html

这是knife4j的页面

 

输入localhost:8080/swagger-ui.html

 

输入localhost:8080/v3/api-docs

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值