kayki
一個非常好的問題。可以試試如下方法:
1,第三方api,使用nginx代理轉發
Nginx配置路由轉發時,重新拼接路徑和參數。
2,自己開發的api,使用url變量,或者在請求參數中增加路由信息
1)路徑中包含參數,比如url/{name},Java開發時可以使用@PathVariable讀取
2)請求體參數中包含路由信息,解析得到後,實現判斷邏輯
急速馬力快de源碼控
一個外部接口如何統一API地址,這個問題其實是接口網關如何設計。
接口網關的整體架構如下圖一所示。
那API-Center對外提供的API地址如何設計呢?
通常的設計方案為 https://${domain}/api-gatway?interface=${interface}
例如上述圖中,內部服務包含了訂單域,賬戶域、支付域等業務域,各自定義眾多的Dubbo服務接口。
那接口網關如何設計呢?其實就是建立接口映射機制,即類似如下(為了顯示更有好,省略了dubbo服務的包名)
interface Dubbo Service
api-createOrder OrderService#createOrder
api-updateOrder OrderService#createOrder
這樣對於接口網關的使用方,傳入的接口名稱為 api-createOrder,但經過網關的轉發就能調用到內部的接口。
當然接口網關的設計通常還需包含如下幾個設計要點:
1、簽名驗證
2、協議轉換(http接口參數與Dubbo參數映射、返回結果映射)
3、服務發現
4、限流、降級
巔峰架構思維
你可能是分佈式服務,每個服務在不同的機器上。你可以使用nginx統一對外代理。
如果JAVA的話,springcloud的話,有spring cloud gateway。