2017-02-10 32 views
0

需要一種方法\設計,開發,例如Java的春天REST API的多個版本: exampleAPiV1,exampleAPiV2,exampleAPiV3的一種方式設計開發Java春天REST API的多個版本

所有3個版本的API的應該是活與此同時。此外,如果需要在特定版本中修復/增強bug,則這些更改不會影響其他版本的零或最小代碼重複。

+0

爲什麼你需要多個版本,通常你可以做一個API的很多突變並保持向後兼容性。您經常在URL/v1/exampleapi/sayhello中看到API版本,然後使用適配器將舊郵件升級到最新版本,以避免代碼複製。我看到的另一種可能性是有一個端點幷包含一個版本頭。 –

+0

我們有多個客戶來我們的api。並非所有人都同意過渡到新版本。我希望在任何時候我們都可以支持任何版本,而不會破壞或影響現有的功能。通過標頭或網址版本是好的,但我正在尋找一個解決方案,幫助我維護代碼背後的最小重複的API。 –

+0

大多數情況下,您嘗試將舊郵件升級到最新版本。我對內部設置協議做了類似的處理,每個版本都有所不同,有時甚至是修補程序,所以服務器必須能夠與5個以上不同的客戶端版本進行通信。訣竅是有簡單的轉換器,只能升級到下一個版本。當客戶說他想要談論第3版時,您將第5版消息轉換爲4,然後再轉換爲3,並在接收時將其從3升級到5。通過這種方式添加額外的版本只需要轉換器從以前的版本。 –

回答

1

對於API的版本有3種方式:

  1. 在URL例如暴露API版本:

    http://api.example.com/V1 /實例

    http://api.example.com/V2 /實例

  2. 使用Ac CEPT接頭,接受:應用/ JSON + V1

  3. 使用自定義首部,X-API版本:1

關於轉碼,則可以使用的路由/報頭,以執行相應的功能。

我的意思是在您的應用程序的特定點(中間件)或動作之前,您可以從URL或標題中獲取版本值,並根據您調用該功能的值。