2017-02-07 49 views
2

我很努力地瞭解AWS API網關如何讓我組織我的API,以便版本控制非常簡單。例如,假設我有一個簡單的API來獲取字典中的單詞,可以通過查詢參數過濾結果。我想有V1在此可用:針對AWS API網關的基於URI的版本控制

https://<my-domain>/v1/names?starts-with=<value> 

然而,在

https://<my-domain>/names/v1?starts-with=<value> 

最接近我能得到API網關是......這是相當落後。

我在控制檯中得到的是「Names API」,它帶有一個支持GET方法的「v1」資源。我也有我的自定義域設置,將「名稱」的基本路徑映射到「名稱API」和舞臺「測試」。基本路徑必須是唯一的,所以將「v1」放在只有短期勝利的位置;一旦我創建了我的第二個API(例如Numbers API),它也會有v1,並且我將無法創建第二個映射。

任何和所有的幫助是非常感謝,因爲我現在沒有想法。

回答

4

不要在您的API中創建版本路徑(/ v1)作爲資源。相反,只需調用API「名稱V1」並開始創建資源(/名稱)。當您想要進行重大更改並創建API的新版本時,我們建議您創建一個名爲「Names V2」的全新API。再一次,只需創建沒有版本路徑的資源。

要將這兩個API集合在一起,您可以使用自定義域名。 API網關中的自定義域名包括完全限定的域名和基本路徑。創建兩個自定義域名:

  • myapi.com/v1 - >點到名字V1 API
  • myapi.com/v2的督促下階段 - >點到名字V2 API
  • 的督促下,階段

通過這種方式,您可以在對v2進行更改的同時保持修復錯誤v1並獨立部署兩個API。自定義域名將把它們放在一起並使它們出現在相同的域(myapi.com/v2/names)下。

希望這會有所幫助。

+0

謝謝,斯特凡諾。但是,如果基礎路徑必須是唯一的,我該如何映射Numbers API的v1版本?也就是說,我不認爲我可以擁有myapi.com/v1/names和myapi.com/v1/numbers,還是我誤解了某些內容? – Mark

+1

目前,您只能在自定義域名中擁有一個路徑部分,因此您必須在同一個API中同時包含名稱和數字資源。我們從其他客戶那裏聽說他們希望在域名中包含多個路徑部分,這絕對是我們正在考慮的內容 - 感謝您的反饋! –

+0

不錯。我現在會使用一些備份想法。順便說一句,如果你爲亞馬遜工作,你應該看看堆棧溢出是否可以將你標記爲已驗證的專家或其他東西。你知道像名人在推特上做的?這會讓你的答案更具權威性。 – Mark