第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Swagger-UI 自定義界面

1. 前言

本節(jié)會為大家介紹如何自定義 Swagger-UI 生成界面。

一般來說,Swagger 為我們自動(dòng)生成的界面就足以滿足我們絕大多數(shù)的需求,然而避免不了需要根據(jù)業(yè)務(wù)需求定制 Swagger-UI 界面的情況,盡管這種情況很少。

本節(jié)作為 Swagger 三劍客之一 Swagger-UI 的組成部分,將會為大家介紹 Swagger-UI 主流的自定義實(shí)現(xiàn)方案,由于本套課程適合于初學(xué)者,所以很復(fù)雜的實(shí)現(xiàn)方式以及一些實(shí)現(xiàn)原理將不予介紹。

重點(diǎn)講解內(nèi)容:

  • 主流自定義 Swagger-UI 界面實(shí)現(xiàn)方案對比;

  • 基于 Swagger-ui-layer 實(shí)現(xiàn)自定義 Swagger-UI 界面。

2. 主流自定義 Swagger-UI 界面實(shí)現(xiàn)方案對比

對于自定義 Swagger-UI 界面的實(shí)現(xiàn),目前有兩種方法用得最多:

第一種:重定向 v2/api-docs 的訪問路徑到自己自定義的界面

由于 Swagger-UI 的解析原理是通過訪問 v2/api-docs 路徑下的 html 文件來解析 json 數(shù)據(jù),使用這種方法我們首先需要自定義 html 文件,然后將 v2/api-docs 的訪問路徑指向我們自定義的 html 文件所在地址即可。

這種方法實(shí)現(xiàn)起來難度較大,并且需要開發(fā)人員掌握一定的前端 html 相關(guān)知識,還需要開發(fā)人員有一臺屬于自己的服務(wù)器來部署自定義的 html 文件,對絕大多數(shù)開發(fā)人員并不推薦使用該方法。

第二種:使用 Swagger-ui-layer 實(shí)現(xiàn)自定義 Swagger-UI 界面

出于強(qiáng)烈的 Swagger-UI 界面自定義需求,Swagger 的社區(qū)開始活躍了起來,前兩年就可以在 Swagger 社區(qū)中看到 Swagger-ui-layer 這一名詞。Swagger-ui-layer 是一款專門針對自定義 Swagger-UI 界面而開發(fā)的工具包,其支持 Java 平臺等其他主流平臺集成使用。

使用 Swagger-ui-layer ,我們只需要進(jìn)行兩步操作,即可完成自定義 Swagger-UI 界面的功能,這種方式集成方便,配置簡單,是業(yè)界用得最多的一種方式,也是我推薦使用的一種方式,本文就是使用 Swagger-ui-layer 來介紹如何自定義 Swagger-UI 界面。

下面就讓我們來看一下如何使用 Swagger-ui-layer 來實(shí)現(xiàn)自定義 Swagger-UI 界面吧!

3. 基于 Swagger-ui-layer 實(shí)現(xiàn)自定義 Swagger-UI 界面

使用 Swagger-ui-layer 來自定義 Swagger-UI 界面需要兩步驟即可完成:

3.1 第一步 集成 Swagger-ui-layer 依賴到項(xiàng)目中

我們都知道,向項(xiàng)目中集成依賴的方式有很多種:我們可以直接把依賴包拷貝到項(xiàng)目中去,也可以通過主流包管理工具將依賴進(jìn)行統(tǒng)一管理,從而將依賴集成到項(xiàng)目中去,本套課程在開篇時(shí)已經(jīng)說明使用 Maven 包管理工具來構(gòu)建項(xiàng)目,所以這里關(guān)于 Maven 的相關(guān)知識不再介紹,有不知道同學(xué)可以自己去查一下相關(guān)資料。

出于方便考慮,上述依賴截圖對應(yīng)下面依賴代碼:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.8.0</version>
</dependency>
<dependency>
  <groupId>com.github.caspar-chen</groupId>
  <artifactId>swagger-ui-layer</artifactId>
  <version>1.1.3</version>
</dependency>

代碼解釋:

上方的依賴為 Swagger 的依賴,下放的依賴為 Swagger-ui-layer 的依賴,同學(xué)們可以直接將上述兩個(gè)依賴直接拷貝到自己項(xiàng)目的 pom 文件中去。

在將依賴拷貝到項(xiàng)目的 pom 文件中去后,等待依賴加載完畢即可。

3.2 第二步 對 Swagger-ui-layer 進(jìn)行必要的配置

這里我們需要對上一章節(jié)中介紹的 Swagger 配置類進(jìn)行一些必要的修改,修改好的配置類代碼如下:

@Bean
public Docket ProductApi() {
    return new Docket(DocumentationType.SWAGGER_2)
            .genericModelSubstitutes(DeferredResult.class)
            .useDefaultResponseMessages(false)
            .forCodeGeneration(false)
            .pathMapping("/")
            .select()
            .build()
            .apiInfo(productApiInfo());
    }

private ApiInfo productApiInfo() {

ApiInfo apiInfo = new ApiInfo("慕課 Wiki Swagger 課程數(shù)據(jù)接口文檔",
        "慕課 Swagger-Wiki 演示系統(tǒng)",
        "1.0.0",
        "API TERMS URL",
        "聯(lián)系人郵箱",
        "license",
        "license url");
      return apiInfo;
    }

代碼解釋:

第 2 行,我們通過 DocumentationType.SWAGGER_2 屬性聲明項(xiàng)目中所使用的接口文檔類型是 Swagger 2 版本的,這是必須的。

第 9 行,我們通過向 apiInfo 方法將我們自定義的 Swagger 界面描述信息填充到 Swagger-UI 中去。

第 12 行,在 productApiInfo 方法內(nèi)部,我們對 Swagger 界面上所展示的信息進(jìn)行一些必要的描述。

以上就是配置類的最關(guān)鍵的三個(gè)部分,當(dāng)我們配置完這些屬性之后,啟動(dòng)我們的項(xiàng)目即可看到界面效果。

顯示效果:

Tips :

  1. 注意 Swagger-ui-layer 開源工具的版本和 Swagger 版本的區(qū)別,雖然官網(wǎng)上說 Swagger-ui-layer 的版本并不會因?yàn)?Swagger 版本的變遷而受到影響,但是這里還是要說一句:如果是 Swagger 2.0 或以上版本,則請使用 Swagger-ui-layer 的最新版本 1.1.3。
  2. 一般情況下,我們不需要針對 Swagger-UI 界面進(jìn)行自定義配置,如有特殊要求,例如公司或企業(yè)定制時(shí)才會用到,然而,使用 Swagger-ui-layer 是最常用的方案。
  3. 本節(jié)只是對 Swagger-ui-layer 進(jìn)行一個(gè)相對簡單的介紹,如果同學(xué)們感興趣可以去 Swagger-ui-layer 的 github 上獲取更多相關(guān)資料,出于對開源貢獻(xiàn)者的尊敬,這里附上鏈接地址:https://github.com/caspar-chen/swagger-ui-layer 。

4. 小結(jié)

本小節(jié)針對如何自定義 Swagger-UI 界面做了詳細(xì)的介紹,從當(dāng)前可用的兩個(gè)主流方案開始,通過對比當(dāng)下主流方案的區(qū)別,選擇了適合本課程的實(shí)現(xiàn)方案,同時(shí)針對該實(shí)現(xiàn)方案在具體實(shí)操環(huán)節(jié)中容易出現(xiàn)的問題做了必要的提醒,希望同學(xué)們在實(shí)操的時(shí)候可以一次成功。