1. 程式人生 > 實用技巧 >Swagger介面醜、功能弱怎麼破?用knife4j增強下就給力了!

Swagger介面醜、功能弱怎麼破?用knife4j增強下就給力了!

在做CRMEB-JAVA開源商城系統時,我們團隊用到了uni-app,也是時下比較流行的移動端開發技術,這裡邊就牽扯到了前後端全部分離的問題,一般在使用java開發前後端分離專案的時候,都會用到Swagger,Swagger 是一個用於生成、描述、呼叫和視覺化 RESTful 風格的 Web api 服務的框架,Swagger 讓部署管理和使用功能強大的 API變的簡單,但這僅僅是在小型專案裡,API介面不多的情況下。

隨著,CRMEB-JAVA開源商城系統的不斷優化,功能的不斷增加,並且前後臺都做到了前後端分離,介面數量一度超過了200多個,這就使得系統中一些使用體驗變的越來越差,例如:
提交引數為JSON沒法格式化,引數錯了查詢麻煩,返回結果沒法摺疊,太長了沒法看,真是非常的痛苦呀!

但是,作為程式設計師一定要知道,你遇到的問題別人也一定遇到過,也肯定有熱心的大牛解決了這個問題,所以,一個叫knife4j的增強版本Swagger誕生了,他幫我們很好的解決了以上問題,引用一下原作者的話來簡單瞭解下knife4j:

希望knife4j像一把匕首一樣小巧,輕量,並且功能強悍,也希望把她做成一個為Swagger介面文件服務的通用性解決方案,而不僅僅只是專注於前端Ui前端.

先上一張專案剛上的knife4j優化過的Swagger的劇照,先睹為快:

看上圖是不是一目瞭然,最重要的是搜尋框可以搜尋相關api介面快速查詢,並且可以線上除錯介面,再來張圖展示!

knife4j開源專案說明:

結構說明如下:

模組名稱 說明
knife4j 為Java MVC框架整合Swagger的增強解決方案,明細請參考上面的介紹說明
knife4j-admin 雲端Swagger介面文件註冊管理中心,整合gateway閘道器對任意微服務文件進行組合整合,該模組尚未啟動開發
knife4j-extension chrome瀏覽器的增強swagger介面文件ui,快速渲染swagger資源,該模組尚未啟動開發
knife4j-service 為swagger服務的一系列介面服務程式 ,該模組尚未啟動開發
knife4j-front knife4j-spring-ui的純前端靜態版本,用於整合非Java語言使用,該模組尚未啟動開發
knife4j-vue 該模組是knife4j前端的原始碼模組,基於Vue框架開發,knife4j-spring-ui中的檔案是使用該模組進行打包構建的
swagger-bootstrap-ui knife4j的前身,最後釋出版本是1.9.6
swagger-bootstrap-ui-front swagger-bootstrap-ui的純前端版本,基於1.9.3的分支改造而成,其他開發語言體系可以使用,改造後一直未更新

Spring Boot 專案使用knife4j

maven引用

第一步: 是在專案的pom.xml檔案中引入knife4j的依賴,如下:

<dependencies>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <!--在引用時請在maven中央倉庫搜尋最新版本號-->
        <version>2.0.2</version>
    </dependency>
</dependencies>

如果你想使用bom的方式引入,請參考Maven Bom方式引用

建立Swagger配置檔案

新建Swagger的配置檔案SwaggerConfiguration.java檔案,建立springfox提供的Docket分組物件,程式碼如下:

@Configuration
@EnableSwagger2
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class SwaggerConfiguration {
 

    @Bean(value = "defaultApi2")
    public Docket defaultApi2() {
        Docket docket=new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                //分組名稱
                .groupName("2.X版本")
                .select()
                //這裡指定Controller掃描包路徑
                .apis(RequestHandlerSelectors.basePackage("com.swagger.bootstrap.ui.demo.new2"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }

}

以上有兩個註解需要特別說明,如下表:

註解 說明
@EnableSwagger2 該註解是Springfox-swagger框架提供的使用Swagger註解,該註解必須加
@EnableKnife4j 該註解是knife4j提供的增強註解,Ui提供了例如動態引數、引數過濾、介面排序等增強功能,如果你想使用這些增強功能就必須加該註解,否則可以不用加

訪問

  • 在瀏覽器輸入地址:http://host:port/doc.html
  • 點選進入CRMEB-JAVA開源商城專案學習檢視:Gitee專案地址

感謝您的閱讀,如果對您有幫助,歡迎關注CRMEB掘金號。碼雲上有我們開源的商城專案知識付費專案,均是基於PHP+vue+mysql開發,學習研究歡迎使用,大家可以動動發財的小手點點Start哦,關注我不迷路!