7. Knife4j
7.1 简介
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名kni4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!也就是说Knife4j包含了Swagger的功能且比其更强大。使用了Knife4j就不用重复使用Swagger
7.2 基本使用
在此之前我必须要吐槽一把,缓存和版本冲突问题真的是太频繁了,SpringBoot版本老是与Knife4j(还有Swagger)版本冲突,所以需要频繁更改依赖版本,而且在更改后记得在maven生命周期中clean一下,删掉之前产生的文件,否则可能会有影响。
下面是基于SpringBoot的Knife4j小案例:
- 添加依赖 SpringBoot2.6.2
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
- 配置Swagger信息
在SpringBoot的配置文件(如application.yml或application.properties)中添加如下配置:
# Swagger配置
swagger:
enabled: true # 启用Swagger
title: Knife4j示例 # API文档标题
description: Knife4j示例API文档 # API文档描述
version: 1.0 # API文档版本
contact:
name: ChatGPT # 联系人姓名
url: https://github.com/OpenAIChatbot/ChatGPT # 联系人网址
email: chatgpt@openai.com # 联系人邮箱
- 编写Controller
在Controller中添加一些接口方法,例如:
@RestController
@RequestMapping("/api")
@Api(tags = "示例接口")
public class ExampleController {
@ApiOperation("获取用户信息")
@ApiImplicitParam(name = "id", value = "用户ID", required = true)
@GetMapping("/user/{id}")
public String getUserInfo(@PathVariable Integer id) {
return "User info of " + id;
}
@ApiOperation("添加用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "用户名", required = true),//多个参数时的参数说明
@ApiImplicitParam(name = "age", value = "用户年龄", required = true)
})
@PostMapping("/user")
public String addUser(String name, Integer age) {
return "Add user: " + name + ", " + age;
}
}
- 启动应用程序
启动SpringBoot应用程序,访问http://localhost:8080/doc.html即可查看Knife4j生成的API文档。(没有异常即为成功)
7.3 文档请求异常
-
当访问网址出现 Knife4j文档请求异常 这个提示时,可能是应为Knife4j依赖版本低了。使用3.0.3版本没问题
-
另外,如果报其他错误,可能是因为依赖版本冲突导致,可以尝试换一些版本依次测试