1. 概述
Knife4j是一個用于生成和展示API文檔的工具,同時它還提供了在線調試的功能,下圖是其工作界面。
* Knife4j有多個版本,最新版的Knife4j基于開源項目`springdoc-openapi`,這個開源項目的核心功能就是根據SpringBoot項目中的代碼自動生成符合OpenAPI規范的接口信息。
* OpenAPI規范定義接口文檔的內容和格式,其前身是`Swagger`規范。?
2. 與springboot集成?
1.創建maven項目?
2.導入依賴
<dependency>
? ? <groupId>com.github.xiaoymin</groupId>
? ? <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
? ? <version>4.3.0</version>
</dependency>?
?3.創建配置類
@Configuration
public class Knife4jConfiguration {@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title("hello-knife4j項目API").version("1.0").description("hello-knife4j項目的接口文檔"));}@Beanpublic GroupedOpenApi userAPI() {return GroupedOpenApi.builder().group("用戶信息管理").pathsToMatch("/user/**").build();}@Beanpublic GroupedOpenApi systemAPI() {return GroupedOpenApi.builder().group("產品信息管理").pathsToMatch("/product/**").build();}
}
4.啟動SpringBoot項目,訪問http://localhost:8080/doc.html,觀察接口文檔。
?
3. 常用注解
@Schema`注解用于描述作為接口參數或者返回值的實體類的數據結構。
@Data
@Schema(description = "用戶實體類")
public class User {@Schema(description = "用戶id")private Integer id;@Schema(description = "用戶姓名")private String name;
}
?
@Tag注解用于對接口進行分類,相同`Tag`的接口會放在同一個菜單。
@Operation用于對接口進行描述。
@Parameter用于對HTTP請求參數進行描述
@RestController
@RequestMapping("/user")
@Tag(name = "用戶信息管理") //@Tag給該類起標題:用于描述該類
public class UserController {@GetMapping("/getId")@Operation(summary = "根據ID查詢用戶信息") //@Operation 屬性summary:用與說明該方法的作用public User getById(@Parameter(description = "用戶ID") @RequestParam("id") Integer id) {User user = new User();user.setId(id);return user;}
}