基於 Springfox 框架,擴展了 Swagger 功能,如:下載離線文件等, EP 11 增加了相依套件及整合設定,並且提供可在產品環境關閉 API 文件功能的設定。
Table of Contents
Toggle功能簡介
Knife4j 是一個增強 Swagger 產生 API 檔功能的工具,優化了API文檔的UI介面,更加小巧、輕量,提供更多功能。
Spring Boot Knife4j
檔案目錄
./
+- build.gradle
+- src
+- main
+- resources
| +- application.properties
+- java
| +- org
| +- ruoxue
| +- spring_boot_168
| +- config
| +- Swagger3Config.java
Gradle
build.gradle
增加 Knife4j Spring Boot Starter 。
修改完後,點右鍵,Gradle -> Refresh Gradle Project 。
buildscript {
group 'org.ruoxue.spring-boot-168'
version = '0.0.1-SNAPSHOT'
ext {
knife4jVersion = '3.0.3'
}
}
dependencies {
implementation "com.github.xiaoymin:knife4j-spring-boot-starter:${knife4jVersion}"
}
組態設定
application.properties
Knife4j Spring Boot 增加 Springfox 設定。
springfox.documentation.enabled=true
產品環境時,應把 springfox.documentation.enabled 設為 false。
Swagger3Config.java
Spring Knife4j 修改檔案:
增加 @EnableKnife4j,開啟功能。
增加 @ConditionalOnProperty,產品環境時關閉文件。
package org.ruoxue.spring_boot_168.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@EnableOpenApi
@EnableKnife4j
@Configuration
@ConditionalOnProperty(name = "springfox.documentation.enabled", havingValue = "true")
public class Swagger3Config {
public Swagger3Config() {
}
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30).apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("org.ruoxue.spring_boot_168"))
.paths(PathSelectors.any())
.build().pathMapping("/");
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SB 168")
.description("SB 168")
.contact(new Contact("若雪", "https://www.ruoxue.org", "ruoxueorg@gmail.com"))
.version("0.0.1")
.build();
}
}
執行測試
Application.main
在主程式點右鍵執行 Run As -> Java Application。
網址:
http://localhost:10000/doc.html

下載離線文件。

心得分享
Knife4j Spring 支援在線 API 文件,大幅提高開發效率,有些場景還需要提供離線文件給其他合作開發人員, Knife4j UI Spring Boot 提供友善的 API 介面,實現了下載離線文件功能,更方便快速產出文件。