SpringBoot整合knife4j3.0.3實(shí)現(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 = "用戶實(shí)體", 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)文章
spring-boot實(shí)現(xiàn)增加自定義filter(新)
本篇文章主要介紹了spring-boot實(shí)現(xiàn)增加自定義filter(新),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
Spring?Boot?整合?Fisco?Bcos的案例分析(區(qū)塊鏈)
本篇文章介紹的?Spring?Boot?整合?Fisco?Bcos的案例,是在阿里云服務(wù)器上部署驗證的。大家可根據(jù)自己的電腦環(huán)境,對比該案例進(jìn)行開發(fā)即可,具體案例代碼跟隨小編一起看看吧2022-01-01
vue+springboot+shiro+jwt實(shí)現(xiàn)登錄功能
這篇文章主要介紹了vue+springboot+shiro+jwt實(shí)現(xiàn)登錄功能,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04
基于spring?@Cacheable?注解的spel表達(dá)式解析執(zhí)行邏輯
這篇文章主要介紹了spring?@Cacheable?注解的spel表達(dá)式解析執(zhí)行邏輯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
深入理解Java8新特性之Stream API的終止操作步驟
Stream是Java8的一大亮點(diǎn),是對容器對象功能的增強(qiáng),它專注于對容器對象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來看看吧2021-11-11

