knife4j-Swagger

 <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/knife4j-spring-ui -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-ui</artifactId>
            <version>2.0.1</version>
        </dependency>
package com.jiuding.util.config.swagger2;

import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * ${DESCRIPTION}
 *
 * @author edison
 * @create 2017-01-02 23:53
 */
@EnableSwagger2
@Configuration
public class Swagger2Config {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //爲當前包路徑
                .apis(RequestHandlerSelectors.any())
                .paths(Predicates.not(PathSelectors.regex("/error.*")))//錯誤路徑不監控
                .build();
    }

    //構建 api文檔的詳細信息函數
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                //頁面標題
                .title("功能測試")
                //創建人
                .contact(new Contact("tiger", "www.baidu.com", "[email protected]"))
                //版本號
                .version("2.0")
                //描述
                .description("API 描述")

                .build();
    }
}

訪問:http://localhost:84/doc.html

 

1.概覽

knife4j是爲Java MVC框架集成Swagger生成Api文檔的增強解決方案,前身是swagger-bootstrap-ui,取名kni4j是希望她能像一把匕首一樣小巧、輕量、並且功能強悍!

knife4j的前身是swagger-bootstrap-ui,爲了契合微服務的架構發展,由於原來swagger-bootstrap-ui採用的是後端Java代碼+前端Ui混合打包的方式,在微服務架構下顯的很臃腫,因此項目正式更名爲knife4j。

更名後主要專注的方面

  • 前後端Java代碼以及前端Ui模塊進行分離,在微服務架構下使用更加靈活

  • 提供專注於Swagger的增強解決方案,不同於只是改善增強前端Ui部分

     

2.項目模塊

目前主要的模塊包括:

3.功能特性

簡潔

基於左右菜單式的佈局方式,是更符合國人的操作習慣吧,文檔更清晰…

個性化配置

個性化配置項,支持接口地址、接口description屬性、UI增強等個性化配置功能…

增強

接口排序、Swagger資源保護、導出Markdown、參數緩存衆多強大功能…

4.業務場景

不使用增強功能,純粹換一個swagger的前端皮膚

不使用增強功能,純粹換一個swagger的前端皮膚。這種情況是最簡單的,你項目結構下無需變更

可以直接引用swagger-bootstrap-ui的最後一個版本1.9.6或者使用knife4j-spring-ui

老版本引用

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.6</version>
</dependency>

新版本引用

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-ui</artifactId>
    <version>${lastVersion}</version>
</dependency>

Spring Boot項目單體架構使用增強功能

在Spring Boot單體架構下,knife4j提供了starter供開發者快速使用

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>${knife4j.version}</version>
</dependency>

該包會引用所有的knife4j提供的資源,包括前端Ui的jar包

Spring Cloud微服務架構

在Spring Cloud的微服務架構下,每個微服務其實並不需要引入前端的Ui資源,因此在每個微服務的Spring Boot項目下,引入knife4j提供的微服務starter

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-micro-spring-boot-starter</artifactId>
    <version>${knife4j.version}</version>
</dependency>

在網關聚合文檔服務下,可以再把前端的ui資源引入

<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-spring-boot-starter</artifactId>
    <version>${knife4j.version}</version>
</dependency>

5.界面效果

在線預覽

http://knife4j.xiaominfo.com/doc.html

Authorize

 

 

Swagger Models

 

 

全局參數設置

 

 

離線文檔下載

 

 

其他個性化設置

 

 

關鍵字搜索

 

6.總結

非常不錯的一個開源項目,Gitee上已經有近2k的star,感興趣的朋友不妨試試!

Github
https://github.com/xiaoymin/swagger-bootstrap-ui
碼雲
https://gitee.com/xiaoym/knife4j

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章