我正在爲Web應用程序設計一個REST API。我想清楚地對API進行版本化,以便將來可以更改接口而不會破壞現有服務。因此,在我的v1.0 API中,我想清楚地將其識別爲v1.0 API,這讓我可以自由發佈未來v1.1版本並進行突破性更改。在URI路徑中放置句點是不好的做法嗎?
我的問題是,在URI的路徑組件中的一段時間是不好的做法?
例如。有沒有好的理由不使用http://example.com/myapi/v1.0/services作爲我的服務的URI?
我正在爲Web應用程序設計一個REST API。我想清楚地對API進行版本化,以便將來可以更改接口而不會破壞現有服務。因此,在我的v1.0 API中,我想清楚地將其識別爲v1.0 API,這讓我可以自由發佈未來v1.1版本並進行突破性更改。在URI路徑中放置句點是不好的做法嗎?
我的問題是,在URI的路徑組件中的一段時間是不好的做法?
例如。有沒有好的理由不使用http://example.com/myapi/v1.0/services作爲我的服務的URI?
我認爲這是一個好主意。我見過幾種休息服務。
在URI路徑中使用句點是完全可以接受的。根據RFC 3986 section 2.3也有效。
它一個完全有效的路徑字符,請參閱該規範http://www.ietf.org/rfc/rfc2396.txt
第27頁沒有理由不使用它
我認爲與其他人不同......我認爲這不是一個很好的做法,使用它的網址。
恕我直言,如果你在Content-Type Header上版本更好。
作爲一個例子,如果要使用的應用程序/ XML:
內容類型:應用/ 1.0 + XML。
使用Content-Type,它也表示資源本身是版本化的。雖然如果你在url上使用它,似乎你正在對服務進行版本控制(似乎並非如此),如果你正在更改服務本身,你可能會更改url,所以你不需要版本數。
編輯:你也應該在Accept Header上使用它,而不僅僅是在Content Type上。
仔細查看問題和答案。大部分答案指的是在Url中使用一段時間,與版本控制無關。我提出了這個問題,但這不是原來的問題。 – 2010-04-20 23:28:35
即使這不是問題,我感謝您的評論 - 這是一個非常好的建議。 – saille 2010-04-21 02:12:03
再次感謝Darren。通過你的鏈接,Shonzilla回答了這個問題:http://stackoverflow.com/questions/389169/best-practices-for-api-versioning讓我相信版本控制可能是一個壞主意。我所關心的一個問題是,非瀏覽器客戶端一個使用我的服務的PHP網站將處理http重定向,如果我想用這種方法來處理重大更改? – saille 2010-04-20 22:46:37