成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊微服務聚合 API 文檔

開發 前端
微服務模塊眾多,如果不聚合文檔,則訪問每個服務的API文檔都需要單獨訪問一個Swagger UI界面,這么做客戶端能否接受?

今天這篇文章介紹一下微服務如何聚合Swagger實現接口文檔管理。

文章目錄如下:

圖片圖片

為什么需要聚合?

微服務模塊眾多,如果不聚合文檔,則訪問每個服務的API文檔都需要單獨訪問一個Swagger UI界面,這么做客戶端能否接受?

反正作為強迫癥的我是接受不了.......

既然使用了微服務,就應該有統一的API文檔入口。

如何聚合?

統一的文檔入口顯然應該聚合到網關中,通過網關的入口統一映射到各個模塊。

圖片圖片

本文采用Spring Cloud Gateway 聚合 Swagger 的 方式 生成API文檔。

案例源碼結構如下:

圖片圖片

本文只介紹如何聚合Swagger,關于網關、注冊中心等內容不再介紹,有不了解的看陳某前面文章。

單個服務如何聚合Swagger?

這里的單個服務不包括網關,網關需要單獨配置。

單個服務聚合其實很簡單,就是普通的Spring Boot 整合 Swagger,但是微服務模塊眾多,不能每個微服都整合一番,因此可以自定義一個swagger-starter,之后每個微服務都依賴這個starter即可。

詳細的步驟如下:

1、創建swagger-starter

自定義starter這里就不再介紹了,都是基礎的知識;

目錄結構如下:

圖片圖片

1)添加依賴

對于Swagger原生的UI界面陳某不太喜歡,因此使用了一款看起來還不錯的UI界面,依賴如下:

<!--swagger-->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-boot-starter</artifactId>
</dependency>

<!--swagger-ui  這里是用了一個好看一點ui界面-->
<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>swagger-bootstrap-ui</artifactId>
</dependency>

對于UI界面,每個人審美不同,選擇自己喜歡的就好。

2)自動配置類配置Swagger

陳某是將每個服務的API信息抽離出一個屬性類SwaggerProperties,后續只需要在每個服務的配置文件中指定即可。

@Data
@ConfigurationProperties(prefix = SwaggerProperties.PREFIX)
@Component
@EnableConfigurationProperties
publicclass SwaggerProperties {
    publicstaticfinal String PREFIX="spring.swagger";

    //包
    private String basePackage;

    //作者相關信息
    private Author author;

    //API的相關信息
    private ApiInfo apiInfo;

    @Data
    publicstaticclass ApiInfo{
        String title;
        String description;
        String version;
        String termsOfServiceUrl;
        String license;
        String licenseUrl;
    }
    @Data
    publicstaticclass Author{
        private String name;

        private String email;

        private String url;
    }
}

對于Swagger的配置其實很簡單,分為如下部分:

  • API文檔基本信息配置
  • 授權信息配置(基于OAuth2的認證配置)

API文檔配置無非就是配置文檔的基本信息,比如文檔標題、作者、聯系方式.....

代碼如下:

圖片圖片

授權信息配置也很簡單,就是在全局信息的請求頭中配置一個能夠放置令牌的地方,代碼如下:

圖片圖片

此處對應UI界面的地方如下圖:

圖片圖片

只需要將獲取token令牌設置到這里即可。

好了,swagger-starter關鍵代碼就介紹完了,詳細配置見源碼。

案例源碼已上傳GitHub,關注公眾號:碼猿技術專欄,回復關鍵:9528 獲取!

2、微服務引用swagger-starter

單個微服務引用就很簡單了,只需要添加如下依賴:

<dependency>
  <groupId>cn.myjszl</groupId>
  <artifactId>swagger-starter</artifactId>
</dependency>

接下來只需要在配置文件配置API相關的信息即可,比如訂單服務的配置如下:

圖片圖片

好了,至此單個服務的配置完成了。

此時我們可以驗證一下,直接訪問:http://localhost:3002/swagger-order-boot/v2/api-docs,結果如下圖:

圖片圖片

網關如何聚合Swagger?

網關聚合的思想很簡單,就是從路由中獲取微服務的訪問地址,然后拼接上 /v2/api-docs 即可。

同樣的還是要添加Swagger的兩個依賴,如下:

<!--swagger-->
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-boot-starter</artifactId>
</dependency>

<!--swagger-ui  這里是用了一個好看一點ui界面-->
<dependency>
   <groupId>com.github.xiaoymin</groupId>
   <artifactId>swagger-bootstrap-ui</artifactId>
</dependency>

創建GatewaySwaggerResourcesProvider實現SwaggerResourcesProvider,重寫其中的get方法,代碼如下:

圖片圖片

案例源碼已上傳GitHub,關注公眾號:碼猿技術專欄,回復關鍵:9528 獲取!

好了,網關的配置這里就完成了。

此時啟動網關、訂單、庫存服務,直接訪問網關的文檔:http://localhost:3001/doc.html,結果如下圖:

圖片圖片

API文檔好用的功能介紹

不得不說這款Swagger UI 界面還是比較簡單易用的,個人用起來還不錯。

1、搜索功能

在右上角的搜索功能可以根據接口描述搜索相關的接口信息,如下圖:

圖片圖片

2、離線文檔

可以直接拷貝文檔的MarkDown形式轉換成Html或者PDF生成離線文檔,如下圖:

圖片圖片

3、令牌配置

在訪問需要認證的接口時,可以通過配置令牌,這樣令牌將會全局生效,不必每個請求都要配置一遍,如下:

圖片圖片

4、配置緩存

該文檔的所有配置,包括請求參數、授權令牌等信息都是緩存的,也就是說配置一次,下次再打開的時候也是默認存在的。

5、全局參數配置

對于一些全局的參數,比如請求頭中需要攜帶請求客戶端、版本號等信息,可以在全局參數中配置,如下:

圖片圖片

總結

本篇文章介紹了微服務集成網關聚合Swagger文檔,開發中非常實用。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2022-05-24 08:21:16

數據安全API

2025-02-10 02:20:00

微服務SOA架構

2024-07-29 08:24:43

2024-09-09 00:00:00

編寫技術文檔

2023-11-10 08:04:43

Java 17Java 11JDK

2024-06-07 14:54:55

2023-01-04 18:10:26

服務模塊化jre

2024-11-27 08:47:12

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2023-09-10 21:42:31

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2024-10-15 08:08:13

2025-04-08 00:16:07

2023-03-26 23:47:32

Go內存模型

2024-07-26 09:47:28

2022-10-08 00:00:05

SQL機制結構

2023-07-24 09:41:08

自動駕駛技術交通
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色毛片免费看 | 在线免费观看成年人视频 | 国产精品久久久久无码av | 国产欧美精品一区 | 久久久青草婷婷精品综合日韩 | 亚洲人成人一区二区在线观看 | 免费激情av| 在线观看视频h | 国产成人精品999在线观看 | 国产a视频 | 精品三级在线观看 | 欧美激情综合网 | 国产精品久久久亚洲 | 久久成人精品一区二区三区 | 91伊人 | 欧美黄在线观看 | 国产一区二区不卡 | 日本精品一区二区三区在线观看视频 | 91看片在线 | 国产精品日韩一区二区 | 最新免费av网站 | 久久9久 | 九九热国产精品视频 | 国产精品一二区 | 国产精品日本一区二区不卡视频 | 欧美日韩一区二区在线播放 | 成人二区| 最新国产精品视频 | 久久草在线视频 | 亚洲激情专区 | 久久乐国产精品 | 欧美一区二区三区在线播放 | 午夜视频在线免费观看 | 亚洲视频免费观看 | 久久激情五月丁香伊人 | 国产精品精品视频一区二区三区 | 欧美成年网站 | 亚洲精品在线播放 | 五月天国产 | 97超在线视频| 一级网站 |