在Spring Boot项目中,我们可以通过引入Swagger依赖,然后在Controller中加入相应注解,即可生成API文档。Swagger提供了一个Web界面,在这个界面上可以查看所有API的信息,包括请求方法、参数、响应码等。Knife4j是Swagger-UI的增强版,它是在Swagger-UI的基础上进行了改进和优化,提供了更加完善的交互体验和更加美观的UI设计。同时,它也提供了更多的扩展功能,例如在线调试和多语言支持等。
pom.xml:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
在Spring Boot项目中,Controller通常会有多个接口,我们可以通过在Controller类上添加@Api注解来为API接口添加描述信息,以及使用@ApiOperation注解来为单个接口添加描述信息。
在Spring Boot项目中,我们可以通过Swagger注解@Api来定义接口分组。@Api注解指定了该Controller的标签为“用户管理”,这个标签将作为接口分组的名称::
@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserApi {
}
当一个Controller包含多个接口时,可以通过@ApiOperation注解指定每个接口的简介和说明。例如:
@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserApi {
@GetMapping("/{id}")
@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户信息")
public User getUserById(@PathVariable("id") Long id) {
}
@PostMapping
@ApiOperation(value = "创建用户", notes = "创建新用户")
public User createUser(@RequestBody User user) {
}
// ...
}
此外,设置项目的基本信息也是有必要的。
@EnableOpenApi
@Configuration
public class DocumentConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.jp"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("管理平台API文档")
.description("管理系统")
.contact(new Contact("jp", "", ""))
.version("2.0.0")
.build();
}
}
打开API文档地址:

Swagger提供了@ApiImplicitParam注解。下面演示使用@ApiImplicitParam注解指定了每个参数的名称、类型和说明:
@RestController
@RequestMapping("/users")
@Api(tags = "用户管理")
public class UserApi {
@GetMapping("/{id}")
@ApiOperation(value = "获取用户信息", notes = "根据用户ID获取用户信息")
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path")
public User getUserById(@PathVariable("id") Long id) {
// ...
}
@PostMapping
@ApiOperation(value = "创建用户", notes = "创建新用户")
@ApiImplicitParams({
@ApiImplicitParam(name = "user", value = "用户实体", required = true, dataType = "User", paramType = "body")
})
public User createUser(@RequestBody User user) {
// ...
}
// ...
}

Spring Boot与Knife4j 3.0.3的整合,是提升API管理水平和团队协作效率的有效手段。它不仅简化了API文档的创建和维护工作,还通过增强的功能特性,为开发者和API使用者带来了前所未有的便利。无论是对于快速发展的创业公司还是大型企业级项目,这种整合都是构建高质量API不可或缺的一部分。