## 前言
* Swagger作為接口文檔工具接入springboot工程很方便,只需一個starter,一個configuration就可集成完畢
* 但是對于有較多微服務的系統來說,一個服務一個文檔地址,便會覺得比較麻煩。有沒有什么好的辦法可以都把他們集中起來?
* 這時候聚合文檔的解決方案出現了,將所有的微服務地址以swagger分組的形式展現,切換分組的時候就相當于直接切換了整個微服務。
* BladeX對聚合文檔做了優化,提供了更簡單、配置更方便的解決方案,那么下面我們來看看具體如何操作。
## 如何配置
* 打開`blade-swagger`工程的配置文件`application.yml`
* 配置需要出現在網關的服務地址,以及顯示的服務名,其中`uri`為網關地址,`location`是對應服務名的swagger-api地址

* 對應服務工程引入 blade-core-boot 依賴即可,此依賴會自動加載swagger所需的依賴

## 文檔地址
1. 我們不妨先打開下聚合文檔的地址,開啟所有增強配置: http://localhost:18000/doc.html
**注??:**
- **新版本開始把swagger網關單獨抽離到了`blade-swagger`服務,請單獨啟動并訪問**
- **雖然swagger服務已經獨立,但仍然需要開啟網關進行服務轉發才可以正常訪問**

2. 點擊左上角的下拉框,我們可以看到已經配置好了3個不同的微服務文檔。

## API潤色
1. swagger增強插件knife4j有不少好用的功能,我們下面來簡單介紹一下,當然詳細說明請查閱官方文檔:https://doc.xiaominfo.com/docs/features/enhance
2. 首先把個性化配置都打開,**目前knife4j版本刷新后會丟失增強配置,所以需要手動關閉tab,再重新打開文檔頁面才會生效**。

3. 其次加上請求頭的Token值(可以直接從授權模塊獲取),獲取后將Token設置到請求頭中

4. 接著我們在`blade-swagger`的配置文件加上演示模塊并啟動服務



5. 重啟blade-swagger服務后,刷新首頁,就可以在左上角便可以看到對應選項了

6. 若大家想實時修改聚合文檔的信息,可以把`blade-swagger`的聚合文檔配置刪掉,然后到nacos進行新增即可
7. 接著打開演示模塊,以排在第二個的`/blade-demo/getNameByProps`接口為例,我想把他排在第一個,并且以中文形態來描述他的api

8. 找到對應API,加上如下配置,`@ApiOperationSupport`中的`order`就是用來設置排序的,值越小,排序越靠前。

~~~java
@GetMapping("name-by-props")
@ApiOperation(value = "查看名稱", notes = "排序測試")
@ApiOperationSupport(order = 1)
public String getNameByProps() {
return properties.getName();
}
~~~
6. 重啟服務查看聚合文檔,可以看到,排序、中文生效,一個常規的API形態誕生了。

7. 調用下API,返回成功,后續編寫文檔就可以放心的交給對接的團隊啦!

8. 如果有些API我們不想顯示在文檔上,可以使用@ApiIgnore注解,例如我們加在剛剛的方法上
~~~java
@ApiIgnore
@GetMapping("name-by-props")
@ApiOperation(value = "查看名稱", notes = "排序測試")
@ApiOperationSupport(order = 1)
public String getNameByProps() {
return properties.getName();
}
~~~
9. 重啟服務,查看文檔界面已經沒有這個API描述了。

## 注意點
* swagger默認在生產環境`prod`下關閉無法使用,因為在生產環境暴露接口會非常危險
* 若需要開啟,請使用`test`環境啟動測試
## 結束語
本文講述了聚合文檔的實現以及Swagger接口描述的潤色,想知道更多用法,還需查看官方文檔。
* swagger文檔直達:https://swagger.io/
* swagger-bootstrap-ui文檔直達:https://doc.xiaominfo.com/docs/quick-start
- 第零章 序
- 序言
- 系統架構
- 視頻公開課
- 開源版介紹
- 商業版介紹
- 功能對比
- 答疑流程
- 第一章 快速開始
- 升級必看
- 環境要求
- 環境準備
- 基礎環境安裝
- Docker安裝基礎服務
- Nacos安裝
- Sentinel安裝
- 插件安裝
- 建數據庫
- 工程導入
- 導入Cloud版本
- 導入Nacos配置
- 導入Boot版本
- 工程運行
- 運行Cloud版本
- 運行Boot版本
- 工程測試
- 測試Cloud版本
- 測試Boot版本
- 第二章 技術基礎
- Java
- Lambda
- Lambda 受檢異常處理
- Stream 簡介
- Stream API 一覽
- Stream API (上)
- Stream API (下)
- Optional 干掉空指針
- 函數式接口
- 新的日期 API
- Lombok
- SpringMVC
- Swagger
- Mybatis
- Mybatis-Plus
- 開發規范
- 第三章 開發初探
- 新建微服務工程
- 第一個API
- API鑒權
- API響應結果
- Redis緩存
- 第一個CRUD
- 建表
- 建Entity
- 建Service和Mapper
- 新增 API
- 修改 API
- 刪除 API
- 查詢 API
- 單條數據
- 多條數據
- 分頁
- 微服務遠程調用
- 聲明式服務調用 Feign
- 熔斷機制 Hystrix
- 第四章 開發進階
- 聚合文檔
- 鑒權配置
- 跨域處理
- Xss防注入
- 自定義啟動器
- Secure安全框架
- Token認證簡介
- Token認證配置
- PreAuth注解配置
- Token認證實戰
- Token認證加密
- 日志系統
- 原理解析
- 功能調用
- Seata分布式事務
- 簡介
- 編譯包啟動
- 配置nacos對接
- docker啟動
- 對接微服務
- 代碼生成配置
- 前言
- 數據庫建表
- 代碼生成
- 前端配置
- 優化效果
- 第五章 功能特性
- SaaS多租戶
- 概念
- 數據隔離配置
- 線程環境自定義租戶ID
- 多終端令牌認證
- 概念
- 系統升級
- 使用
- 第三方系統登錄
- 概念說明
- 對接說明
- 對接準備
- 配置說明
- 操作流程
- 后記
- UReport2報表
- 報表簡介
- 對接配置
- 報表后記
- 接口報文加密
- 簡介
- 運行邏輯
- 對接準備
- 功能配置
- 接口測試
- 改造查詢
- 改造提交
- 改造刪除
- 動態數據權限
- 數據權限簡介
- 數據權限開發
- 純注解配置
- Web全自動配置
- 注解半自動配置
- 數據權限注意點
- 動態接口權限
- 樂觀鎖配置
- 統一服務登陸配置
- Skywalking追蹤監控
- Minio分布式對象存儲
- Boot版本對接至Cloud
- 第六章 生產部署
- windows部署
- linux部署
- jar部署
- docker部署
- java環境安裝
- mysql安裝
- docker安裝
- docker-compose安裝
- harbor安裝
- 部署步驟
- 寶塔部署
- 準備工作
- 安裝工作
- 部署準備
- 部署后端
- 部署前端
- 部署域名
- 結束工作
- k8s平臺部署
- 第七章 版本控制
- Git遠程分支合并
- Git地址更換
- 第八章 學習資料
- 第九章 FAQ
- 第十章 聯系我們