W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
在靜態(tài)部署預覽Swagger JSON章節(jié)中我們已經講過如何通過nginx來部署靜態(tài)文件預覽文檔,但此時我們會發(fā)現(xiàn)存在一個問題,即無法進行接口的調試。
我們借助于nginx的反向代理功能,幫助我們實現(xiàn)接口的調試功能
假設還是提供靜態(tài)JSON的方式,我們只需要在nginx的配置節(jié)點中添加一層location即可
如下:
server {
listen 18001;
server_name 192.168.0.112;
#charset koi8-r;
location / {
root /mnt/application/swagger-static;
}
location /api/ {
// Swagger JSON文件中所有以api開頭的接口全部走8999的代理
proxy_pass http://127.0.0.1:8999/api/;
client_max_body_size 200m;
}
}
通過以上配置,我們即可預覽及調試我們的接口文檔
但是
我們又會發(fā)現(xiàn)問題,很多時候,我們所寫的接口可能并不規(guī)范,并非所有的接口都是以/api開頭的,或者以固定的其他格式開頭的接口,那此時如果我們以上面的配置方式來配置,當我們的接口以/admin/test
這種形式出現(xiàn)時,我們就無法調試該接口
那或許我們可以換一種方式,我們將該服務下的所有接口理解為一個服務,我們給一個服務取一個特點的名稱,然后通過聚合服務的方式,將文檔聚合顯示出來,這樣既可進行調試
例如:
將127.0.0.1:8999
理解為service1
我們在訪問該服務的接口時加上服務前綴:/service1/api/xxx
,此時,不管我們的接口又多么不規(guī)范,只要是service1下的接口,nginx都會將它轉發(fā)到127.0.0.1:8999
這臺服務上,這樣我們也完成了接口的調試
nginx配置:
server {
listen 18001;
server_name 192.168.0.112;
#charset koi8-r;
location / {
root /mnt/application/swagger-static;
}
location /service1 {
proxy_pass http://127.0.0.1:8999/;
}
location /service2 {
proxy_pass http://127.0.0.1:8998/;
}
}
很顯然,通過以上配置,最終能達到我們的預期,但是在我們的文檔界面中,沒有service1
這樣的basePath屬性供我們配置,此時,我們應該如何處理
針對這種情況,swagger-bootstrap-ui
在分組屬性中,擴展了一個basePath
屬性值
此時,我們的group.json
文件如下:
[
{
"name": "微服務-用戶模塊",
"url": "/service1/v2/api-docs?group=分組接口",
"swaggerVersion": "2.0",
"location": "/service1/v2/api-docs?group=分組接口",
"basePath":"/service1"
},
{
"name": "微服務-訂單模塊",
"url": "/service2/v2/api-docs?group=默認接口",
"swaggerVersion": "2.0",
"location": "/service2/v2/api-docs?group=默認接口",
"basePath":"/service2"
}
]
此時,我們的Swagger的JSON路徑地址,我們也可以使用我們服務提供給我們的接口地址,只需要加上為服務名稱,分組名稱即可得到該服務的Swagger JSON文件
通過這種方式,我們可以在group.json
文件中聚合所有后端的Swagger服務接口,最終一致輸出顯示
效果如下:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: