使用Knife4jAggregationDesktop(連接nacos方式),聚合Swagger 3文檔

最近在搗鼓Spring Boot 3.0,雖然每個微服務中的Swagger都配置好了,但要記住每個微服務的IP和端口來訪問是有點不方便的。之前在Spring Boot 2.X時候,用過Spring Cloud Gateway中聚合來展示覺得還不錯,但是升級之后就報錯??戳?a target="_blank">knife4j的官方文檔,發(fā)現(xiàn)目前在Spring Cloud Gateway中只支持knife4j的swagger v2版本。

用Spring Cloud Gateway聚合swagger v3不行,那就試下官方介紹的Knife4jAggregationDesktop方式吧!Desktop顧名思義就是桌面版,但是官方不提供jar包,需要用docker來安裝。官方也有提供教程,但是看起來有復雜,這里只是針對連接nacos方式的更簡單易懂的教程。

一、Docker環(huán)境準備

Linux 下可以使用docker或者podman;Windows下可以使用Docker Desktop (之前有寫過一篇文章:http://m.itdecent.cn/p/d95680ad520a ,關(guān)于安裝Docker Desktop)。安裝過程,這里不多說了,本次使用的Linux下docker。

二、運行容器

使用下面的命令下載docker鏡像:

docker pull xiaoymin/knife4j:v2.0

下載完成后,然后新建一個目錄用于存放配置文件,我建的目錄是:/opt/knife4j,然后運行下面的命令啟動容器:

docker run -e knife4j.source=disk -e knife4j.disk.dir="/knife4j/data" -p 10000:10000 -v /opt/knife4j:/knife4j/data --name knife -d xiaoymin/knife4j:v2.0

說明一下,-e knife4j.source=disk,-e knife4j.disk.dir="/knife4j/data" 這兩個參數(shù)是改寫環(huán)境變量,將配置信息保存在容器中的/knife4j/data目錄下,-v /opt/knife4j:/knife4j/data是將容器中的目錄映射到宿主機的目錄(前面創(chuàng)建的/opt/knife4j目錄),-p 10000:10000這個將容器的端口映射出來,--name knife指定容器的名稱。

然后再執(zhí)行下面的命令查看容器是否運行成功,如果有開啟防火墻的話,還要打開宿主機的相關(guān)端口:

docker ps -a
#打開防火墻端口,CentOS
firewall-cmd --zone=public --permanent --add-port=10000/tcp
firewall-cmd --reload

然后在你的瀏覽器中輸入 http://【宿主機IP】:10000/doc.html 并回車,看到如下頁面即為成功運行。

三、配置聚合

上圖看到的只是一個默認的示例文檔,想要聚合顯示多個微服務的Swagger文檔,還需要配置。這里介紹的是通過連接nacos獲取微服務的方式聚合,優(yōu)點就是修改了微服務的IP和端口也不用修改配置文件。

進入宿主機的/opt/knife4j目錄,發(fā)現(xiàn)多了一個ROOT目錄,進入這個ROOT目錄,下面有一個default.yml文件,這就是默認的示例配置,可以刪除掉這個文件。

ROOT目錄下新建一個nacos.properties文件,注意文件的編碼要是UTF-8格式,否則會引起亂碼??梢栽赪indows中建好文件,再復制過去,nacos.properties文件內(nèi)容如下:

# 配置nacos的IP地址和端口號
knife4j.nacos[0].server=192.168.50.26:8848
# 配置nacos的登錄賬號和密碼
knife4j.nacos[0].username=nacos
knife4j.nacos[0].password=nacos
# 配置微服務所在的命名空間
knife4j.nacos[0].namespace=elwin

# 配置第一個微服務的文檔
# 文檔中顯示的服務名
knife4j.nacos[0].routes[0].name=用戶及系統(tǒng)
# nacos中注冊的服務名
knife4j.nacos[0].routes[0].serviceName=EzLcp-User
# nacos中服務所以的分組名
knife4j.nacos[0].routes[0].groupName=DEFAULT_GROUP
# 服務openapi接口路徑,此處是swagger3版本
knife4j.nacos[0].routes[0].location=/v3/api-docs?group=default

#配置第二個微服務的文檔
knife4j.nacos[0].routes[1].name=日志服務
knife4j.nacos[0].routes[1].serviceName=EzLcp-Log
knife4j.nacos[0].routes[1].groupName=DEFAULT_GROUP
knife4j.nacos[0].routes[1].location=/v3/api-docs?group=default
#配置第N個微服務的文檔...

將上面的文件復制到宿主機ROOT目錄下,不用重啟容器,直接刷新瀏覽器的地址就可以看到聚合后的文檔了。如下圖:

感覺比在Spring Cloud Gateway中配置聚合還簡單些,也不用擔心生產(chǎn)環(huán)境發(fā)布后會暴露接口文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容