我有一個面向公衆的REST API和SDK,包含多個資源被管理:/ api/v1/foo和/ api/v1/bar。兩者都是當前版本1.在不同時間發佈多個端點的API版本
我想對兩個端點進行一些突破性更改,包括使其更加一致(標題,日期格式等),但由於我在敏捷環境中工作,因此我將對一個端點,釋放它,然後再改變另一個。 (假設foo先得到增強)
我該如何處理終結點的版本控制?版本控制的不同選項有哪些優缺點?除了這些還有其他選擇嗎?
選項1:
發佈/ API/V2 /有新的變化FOO。部署Leave/api/v1/foo和/ api/v1/bar。希望使用/ api/v2/foo的新功能的消費者會將foo的API請求發送到/ api/v2/foo,而對bar的請求仍會發送到/ api/v1/bar。有些請求是v1,而其他請求是v2。
最終,我釋放/ api/v2/bar和消費者完全從v1轉換到所有請求都是v2。
選項2:
發佈/ API/V2 /有了新的變化FOO。同時,我還發布了/ api/v2/bar,它只是/ api/v1/bar的別名。希望新功能的消費者停止在v1 SDK中取得成功並將其替換爲v2 SDK。所有請求都以v2發送。
最後,當我完成對bar API的增強時,我遵循上面的相同過程並將所有內容都更改爲v3。