Spring Boot Knife4j - Spring Boot 168 EP 11

Spring Boot Knife4j – Spring Boot 168 EP 11

基於 Springfox 框架,擴展了 Swagger 功能,如:下載離線文件等, EP 11 增加了相依套件及整合設定,並且提供可在產品環境關閉 API 文件功能的設定。

功能簡介

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

下載離線文件。

Knife4j 下載離線文件

心得分享

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

發佈留言