2014-02-05 157 views
4

我創建了一個作爲Web服務公開的應用程序。我正在嘗試遵循REST原則。我正在使用彈簧4.REST API中的版本控制資源

到目前爲止,我所做的是創建我自己的MIME類型application/vnd.mycompany-v1+json。從訪問Web服務的客戶端,我說我想要哪個版本(目前只有一個)。

但是,這不是我需要做的。我還需要保留不同版本的資源,因爲我可以從一個版本添加/刪除屬性等。解決這個問題的方法是什麼?你是否爲每個版本創建一個包?

com.mycompany.web.resources.v1.Bike,​​等?我想這種方法是可行的,但是在這個階段中版本的數量是不知道的,所以它可能是一個大的重複列表。我不知道這是否是一個問題,或者它是否一定是這樣?

我想我不是第一個想到版本化資源的人,所以如何處理?

+0

首先,你所要求的事情可以完成......我記得去年9月,我看到Ben Hale在SpringOne上發表了一個演講。其次,將同一軟件的多個版本保持運行是一個*可怕的想法,因爲你可以很容易地發現不同但代碼完全相似的代碼,它們之間有一些錯誤補丁,但並不是全部。 – Makoto

+0

我建議編輯你的問題,以澄清你正在版本化一個*庫*來訪問你的API,而不是你試圖版本化API本身。 – Charles

+0

@Charles Okey,我將問題變得更加清晰。 – Andreas

回答

0

您應該通過在資源url中添加版本信息來保留不同的版本。像http://yourserver/app/v1/..

你應該在你的api中包含版本控制的原因是,有些客戶端可能已經在使用你以前的版本,並且不想升級。這更多的是爲您的api設計增加靈活性。當然,作爲api提供商,您可以始終聲明從現在開始您不會支持x版本。

+0

這已由服務器設置的客戶端和內容類型頭的Accept頭處理。我不喜歡像這樣保持URL的方法。任何問題是我應該如何處理這些資源。 – Andreas