2016-03-02 51 views
1

使用實用的RESTful API方法,url被定義爲 http://<host>:<port>/<apiname>/api/v1.0/...其中v1.0是api版本。現在所有的客戶端都會堅持這個URL並開始使用這個API。現在推出新的api版本http://<host>:<port>/<apiname>/api/v2.0/...,並帶有一些額外功能。這一改變將打破現有的客戶端,因爲他們都在他們的網址中使用舊版本。如何更改REST api版本而不破壞java和spring mvc中的現有客戶端?如何使用spring mvc在REST API中使用版本?

例如 假設我有一個網絡應用程序,我註冊了DispatcherServerlet,網址格式爲.../api/v1.0。現在我在API中有更多的功能,它將作爲另一個版本的一部分提供。我是否需要製作一個包含網址格式..,/api/v2.0的更多網絡應用程序。擔心的是代碼重複,並需要維護兩個Web應用程序。

一般描述將工作。我不想在header中傳遞api版本。

+1

[版本控制REST API](http://stackoverflow.com/questions/10742594/versioning-rest-api) –

+0

感謝您的好鏈接! ,非常接近這一個。但是我正在尋找答案,我們可以像使用url模式中的某些修改一樣處理Spring。標題和網址版本之間有點爭論。 – Bhushan

+0

您有兩個具有不同URL的API。你想要什麼?你是什​​麼意思_「改變REST API版本_」? – zeroflagL

回答

1

維護v1的分支,v2的分支,爲WAR提供不同的名稱,並部署它們兩者。或者用軟件做 - 多個項目,每個項目都有一個API,最好引用一個共享服務層。另外,如果您打算頻繁發佈新版本以至於需要多位數字,那麼您可能會遇到麻煩。只需堅持v1,v2。每次發佈新版本時,都會增加很大的支持負擔。

+0

維護兩個Web應用程序的麻煩。我們可以使用DispatcherServelet URL進行任何破解,因此它將開始支持這兩個url? – Bhushan