本文介绍Knife4j快速整合SpringBoot开发接口。
一,Knife4J介绍
Knife4j 是一个为 Java MVC 框架集成 Swagger 生成 API 文档的增强解决方案,前身是 Swagger-Bootstrap-UI。相比于Swagger,Knife4j提供了更美观、现代化的 UI 界面,增强了交互性。
二,Knife4J和SpringBoot版本关系
三,整合步骤
1. 配置环境
JDK:17
SpringBoot:3.4.5
Knife4j:4.5.0
2. 引入依赖
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
3. 添加配置信息
在application.yml里面添加配置
# springdoc-openapi项目配置
springdoc:
swagger-ui:
#自定义swagger前端请求路径,输入http:localhost:8080/swagger-ui会自动重定向到swagger页面
path: /swagger-ui
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs #swagger后端请求地址
enabled: true #是否开启文档功能
group-configs: #分组配置,可配置多个分组
- group: 'default' #分组名称
paths-to-match: '/**' #配置需要匹配的路径
packages-to-scan: com.cms #配置要扫描包的路径,一般配置到启动类所在的包名
- group: 'admin-api'
paths-to-match: '/**'
packages-to-scan: com.cms
4. 定义配置类
WebMvcConfig配置SpringMVC信息
/**
* web层配置类,实现静态资源映射,将knife4j相关资源放行,保证生成的接口文档能够正常进行展示
* @author Hva
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
/**
* 设置静态资源映射
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// 添加静态资源映射规则
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
//配置 knife4j 的静态资源请求映射地址
registry.addResourceHandler("/doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
配置Knife4j配置信息
/**
* Knife4j整合Swagger3 Api接口文档配置类
* @author Hva
*/
@Configuration
public class Knife4jConfig {
/**
* 创建了一个api接口的分组
* 除了配置文件方式创建分组,也可以通过注册bean创建分组
*/
@Bean
public GroupedOpenApi adminApi() {
return GroupedOpenApi.builder()
// 分组名称
.group("app-api")
// 接口请求路径规则
.pathsToMatch("/**")
.build();
}
/**
* 配置基本信息
*/
@Bean
public OpenAPI openAPI() {
return new OpenAPI()
.info(new Info()
// 标题
.title("Knife4j整合Swagger3 Api接口文档")
// 描述Api接口文档的基本信息
.description("Knife4j后端接口服务...")
// 版本
.version("v1.0.0")
// 设置OpenAPI文档的联系信息,姓名,邮箱。
.contact(new Contact().name("Hva").email("Hva@163.com"))
// 设置OpenAPI文档的许可证信息,包括许可证名称为"Apache 2.0",许可证URL为"http://springdoc.org"。
.license(new License().name("Apache 2.0").url("http://springdoc.org"))
);
}
}
5. 创建测试类Controller
DemoController
@RestController
@RequestMapping("demo")
public class DemoController {
@GetMapping("test")
@Operation(summary = "测试问好", description = "测试问好")
@Tag(name = "问好", description = "问好")
public String demo() {
return "Hello Knife4j";
}
}
6. 启动项目调试Knife4j接口
如果一切配置正确,启动SpringBoot项目,并访问url地址:localhost:8080/doc.html(ip:port/doc.html),就可以看到knife4j的界面。
在左上角选择对应的分组,再选择api接口进行测试
四. 踩坑日志
1. 项目不能启动报错
首先检查knife4j和springboot对应的版本是否匹配,不匹配就会报错