外部接口如何統一api地址?

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。


分享到:


相關文章: