--- title: "10-swagger-knife4j" created: 2025-12-02 tags: - 项目 aliases: - swagger-knife4j --- # swagger/knife4j 在Java开发中,`Swagger` 和 `Knife4j` 都是用于生成和管理API文档的工具,尤其是在Spring Boot等框架中广泛使用。 ### 1. **Swagger** Swagger 是一种用于描述和文档化 RESTful API 的开源工具集。它主要包括以下几个部分: - **Swagger UI**:通过生成交互式的Web界面来展示API文档,开发者可以直接通过界面测试API接口。 - **Swagger Editor**:提供一个界面来编写API规范(通常是OpenAPI规范)。 - **Swagger Codegen**:自动生成客户端和服务器端代码。 Swagger 可以通过注解(例如 `@Api`, `@ApiOperation`, `@ApiParam` 等)来生成API的文档。Spring Boot 项目中通常会集成 `springfox-swagger2` 或者 `springdoc-openapi` 来实现Swagger功能。 #### 常见使用步骤(Spring Boot 集成 Swagger): 1. **依赖**: ```xml io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2 ``` 2. **配置**: 创建一个 Swagger 配置类: ```java @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example")) .paths(PathSelectors.any()) .build(); } } ``` 3. **访问文档**: 启动项目后,可以访问 `http://localhost:8080/swagger-ui.html` 来查看和测试API接口。 ### 2. **Knife4j** Knife4j 是一个在 Swagger 的基础上进行扩展的工具,旨在提供更强大的功能和更好的用户体验。它为 Swagger 提供了更加美观和易用的用户界面,并且提供了一些增强功能。 - **UI界面**:比默认的Swagger UI更为现代和漂亮,支持分组管理API、接口文档排序、搜索等功能。 - **支持动态接口文档**:允许通过动态刷新和在线调试接口,支持多种格式的文档展示。 #### 常见使用步骤(Spring Boot 集成 Knife4j): 1. **依赖**: ```xml com.github.xiaoymin knife4j-springboot-starter 2.0.7 ``` 2. **配置**: 一般来说,集成 Knife4j 后,它会自动使用 Swagger 的配置。如果需要自定义配置,可以在 `SwaggerConfig` 类中添加: ```java @Configuration public class Knife4jConfig { @Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfo( "API文档", "API接口文档", "1.0", "http://www.example.com", new Contact("开发者", "http://www.example.com", "developer@example.com"), "许可证", "许可证链接", Collections.emptyList()); } } ``` 3. **访问文档**: 使用 Knife4j 后,接口文档可以通过 `http://localhost:8080/doc.html` 访问,提供更加美观的界面和更丰富的交互功能。 ### 总结: - **Swagger**:一个强大的工具集,用于描述、生成和展示API文档。 - **Knife4j**:基于 Swagger 的扩展,提供了更丰富的功能和更好的用户体验。 通常,如果你在 Spring Boot 项目中使用 Swagger 文档,集成 Knife4j 是一个不错的选择,能够提升开发效率和文档的易用性。 --- **项目分区导航**:⬅️ [[09-接口文档|09-接口文档]] | 10-swagger-knife4j | ➡️ [[11-推荐用户|11-推荐用户]]