SpringBoot整合knife4j3.0.3實現(xiàn)過程
在Spring Boot項目中,我們可以通過引入Swagger依賴,然后在Controller中加入相應(yīng)注解,即可生成API文檔。Swagger提供了一個Web界面,在這個界面上可以查看所有API的信息,包括請求方法、參數(shù)、響應(yīng)碼等。
Knife4j是Swagger-UI的增強(qiáng)版,它是在Swagger-UI的基礎(chǔ)上進(jìn)行了改進(jìn)和優(yōu)化,提供了更加完善的交互體驗和更加美觀的UI設(shè)計。同時,它也提供了更多的擴(kuò)展功能,例如在線調(diào)試和多語言支持等。
配置
pom.xml:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
Swagger使用
在Spring Boot項目中,Controller通常會有多個接口,我們可以通過在Controller類上添加@Api注解來為API接口添加描述信息,以及使用@ApiOperation注解來為單個接口添加描述信息。
使用
在Spring Boot項目中,我們可以通過Swagger注解@Api來定義接口分組。@Api注解指定了該Controller的標(biāo)簽為“用戶管理”,這個標(biāo)簽將作為接口分組的名稱::
@RestController
@RequestMapping("/users")
@Api(tags = "用戶管理")
public class UserApi {
}
當(dāng)一個Controller包含多個接口時,可以通過@ApiOperation注解指定每個接口的簡介和說明。例如:
@RestController
@RequestMapping("/users")
@Api(tags = "用戶管理")
public class UserApi {
@GetMapping("/{id}")
@ApiOperation(value = "獲取用戶信息", notes = "根據(jù)用戶ID獲取用戶信息")
public User getUserById(@PathVariable("id") Long id) {
}
@PostMapping
@ApiOperation(value = "創(chuàng)建用戶", notes = "創(chuàng)建新用戶")
public User createUser(@RequestBody User user) {
}
// ...
}
此外,設(shè)置項目的基本信息也是有必要的。
@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("管理系統(tǒng)")
.contact(new Contact("jp", "", ""))
.version("2.0.0")
.build();
}
}
打開API文檔地址:

接口字段說明
Swagger提供了@ApiImplicitParam注解。
下面演示使用@ApiImplicitParam注解指定了每個參數(shù)的名稱、類型和說明:
@RestController
@RequestMapping("/users")
@Api(tags = "用戶管理")
public class UserApi {
@GetMapping("/{id}")
@ApiOperation(value = "獲取用戶信息", notes = "根據(jù)用戶ID獲取用戶信息")
@ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long", paramType = "path")
public User getUserById(@PathVariable("id") Long id) {
// ...
}
@PostMapping
@ApiOperation(value = "創(chuàng)建用戶", notes = "創(chuàng)建新用戶")
@ApiImplicitParams({
@ApiImplicitParam(name = "user", value = "用戶實體", required = true, dataType = "User", paramType = "body")
})
public User createUser(@RequestBody User user) {
// ...
}
// ...
}

Knife4j 增強(qiáng)功能
- 離線文檔導(dǎo)出: 用戶可以直接在界面上導(dǎo)出 HTML、Markdown 或 Word 格式的離線文檔,這對于沒有網(wǎng)絡(luò)環(huán)境下的開發(fā)、分享或者存檔非常有用。
- 接口排序與分組: Knife4j 支持對API接口進(jìn)行自定義排序和分組,使得文檔結(jié)構(gòu)更加清晰有序,方便用戶快速定位到所需接口。
- 在線調(diào)試與數(shù)據(jù)模擬: 除了基本的接口調(diào)用測試外,Knife4j 還增強(qiáng)了在線調(diào)試功能,支持設(shè)置請求頭、Cookie、Body等多種參數(shù),以及保存歷史請求、導(dǎo)入導(dǎo)出測試數(shù)據(jù)等,便于開發(fā)者快速驗證API功能。
- 登錄認(rèn)證支持: 為了保護(hù)API文檔的安全,Knife4j 支持多種登錄認(rèn)證方式(如Basic Auth、OAuth2等),可以對接企業(yè)的統(tǒng)一認(rèn)證系統(tǒng),確保只有授權(quán)用戶才能訪問API文檔。
- 國際化支持: 內(nèi)置多語言支持,可以根據(jù)用戶瀏覽器的語言偏好自動切換界面語言,提高國際團(tuán)隊的協(xié)作效率。
總結(jié)
Spring Boot與Knife4j 3.0.3的整合,是提升API管理水平和團(tuán)隊協(xié)作效率的有效手段。
它不僅簡化了API文檔的創(chuàng)建和維護(hù)工作,還通過增強(qiáng)的功能特性,為開發(fā)者和API使用者帶來了前所未有的便利。
無論是對于快速發(fā)展的創(chuàng)業(yè)公司還是大型企業(yè)級項目,這種整合都是構(gòu)建高質(zhì)量API不可或缺的一部分。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot學(xué)習(xí)篇之@Valid與@Validated的區(qū)別
@Valid是使用Hibernate?validation的時候使用,@Validated是只用Spring?Validator校驗機(jī)制使用,下面這篇文章主要給大家介紹了關(guān)于SpringBoot學(xué)習(xí)篇之@Valid與@Validated區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-11-11
SpringBoot工程下Lombok的應(yīng)用教程詳解
這篇文章主要給大家介紹了關(guān)于SpringBoot工程下Lombok應(yīng)用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
用Java實現(xiàn)春聯(lián)?支持自定義字體顏色
大家好,本篇文章主要講的是用Java編寫春聯(lián)?支持自定義字體顏色,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01

