knife4j
💹代替postman,可自动生成API接口文档
前言
之前有写过 swagger 怎么使用的教程,但是现在很多项目用的接口文档其实是 Knife4j,Knife4j 它是对 swagger 在线接口文档的一个增强,按照官网的话说就是给 swagger 做了一个更好看皮肤的同时加了一些新的功能,本章内容我会向大家介绍在项目中如整合 knife4j 以及一些使用的细节。
在日常开发中,写接口文档是我们必不可少的,而Knife4j就是一个接口文档工具,可以看作是Swagger的升级版,但是界面比Swagger更好看,功能更丰富
早期,swagger-boostrap-ui是1.x版本,如今swagger-bootsrap-ui到2.x,同时也更改名字Knife4j,适用于单体和微服务项目。
- ❗其实就是swagger的plus版本
- ❗等开发完每个接口之后呢,就会⭕自动生成 “接口文档”
优点
- **保证文档的时效性:**只需要少量的注解,Swagger 就可以根据代码自动生成 API 文档,代码变文档跟着变
- 接口请求参数和返回结果不明确的问题
- 在线测试接口
1.导入依赖 pom.xml
项目用到
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
2.创建配置类
//@Configuration 💹配置类
public class Knife4jConfiguration {
// @Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
.title("hello-knife4j项目API")
.version("1.0")
.description("hello-knife4j项目的接口文档"));
} //💹整个文档描述
// @Bean
public GroupedOpenApi userAPI() {
return GroupedOpenApi.builder().group("用户信息管理").
pathsToMatch("/user/**").
build();
}
// @Bean
public GroupedOpenApi systemAPI() {
return GroupedOpenApi.builder().group("产品信息管理").
pathsToMatch("/product/**").
build();
}
}
4.启动项目访问
启动SpringBoot项目,访问http://localhost:8080/doc.html,观察接口文档。
💹doc.html 是固定写法
5.常用注解(可读性)
@Tag(name=“xx”) 和 @Operation(summary = “xx”)
@Parameter(description = “xxxx”) 用在请求参数的 前面
@Schema(description =“用户信息实体”) 注解是放回类型说明,所添加到 entity 下面的user 用户类
6.该系统的应用
@Configuration
public class Knife4jConfiguration {
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI().info(
new Info()
.title("后台管理系统API")
.version("1.0")
.description("后台管理系统API"));
}
@Bean
public GroupedOpenApi systemAPI() {
return GroupedOpenApi.builder().group("系统信息管理").
pathsToMatch(
"/admin/system/**"
).
build();
}
@Bean
public GroupedOpenApi loginAPI() {
return GroupedOpenApi.builder().group("后台登录管理").
pathsToMatch(
"/admin/login/**",
"/admin/info"
).
build();
}
@Bean
public GroupedOpenApi apartmentAPI() {
return GroupedOpenApi.builder().group("公寓信息管理").
pathsToMatch(
"/admin/apartment/**",
"/admin/room/**",
"/admin/label/**",
"/admin/facility/**",
"/admin/fee/**",
"/admin/attr/**",
"/admin/payment/**",
"/admin/region/**",
"/admin/term/**",
"/admin/file/**"
).build();
}
@Bean
public GroupedOpenApi leaseAPI() {
return GroupedOpenApi.builder().group("租赁信息管理").
pathsToMatch(
"/admin/appointment/**",
"/admin/agreement/**"
).build();
}
@Bean
public GroupedOpenApi userAPI() {
return GroupedOpenApi.builder().group("平台用户管理").
pathsToMatch(
"/admin/user/**"
).build();
}
}