2016-01-06 52 views
1

Semantic Versioning如何定義在刪除功能但客戶端不一定會中斷時所需的版本更改?REST處理刪除的向後兼容功能

舉例來說,如果我有一個接受分類PARAM資源:

/person?sort=name 

如果我刪除排序的功能,現有的客戶仍然可以使用該服務(排序就是不兌現)。 SemVer認爲這是一種向後不兼容的變化嗎?如果不是,哪條規則專門處理這種情況?

回答

2

從我的角度來看,現有的客戶端會崩潰 - 他們期望結果集以分類的方式返回,而不會。這意味着,即使用戶點擊了一個按鈕,要求按名稱對內容進行排序,很可能某個網頁或某個地方的應用程序屏幕也會以非排序方式顯示數據。即使應用程序沒有崩潰,客戶端的用戶體驗也會發生負面和意外的變化。因此,你正在談論一個突破性改變,所以主要版本增加。

如果你能夠絕對確保沒有客戶端使用的API元素,則其可能不同的事情 - 例如如果您在一個封閉的世界中工作,您可以檢查並驗證您的所有客戶端,那麼您可以選擇假裝API元素從不存在,並且只考慮更改次要或修補程序更改。但99%的時間應該是一個版本的增加,即使在封閉世界的情況下,我認爲這將是一個極端的方法,只有在某些情況下才是合理的。