細說RESTful API之版本管理

目錄

接口實現版本管理的意義

API版本管理的重要性不言而喻,對於API的設計者和使用者而言,版本管理都有着很是重要的意義。
首先,對於API的設計和實現者而言,須要考慮向後兼容性,可是隨着業務的發展或需求的變動每每會致使兼容性實現很是複雜,所以引入API版本管理將能解決這個尷尬。此時能夠提供多個版本的API實現,不須要再爲了向後兼容性而絞盡腦汁。
其次,對於API的使用者而言,也能夠靈活選擇使用不一樣版本API,而不用擔憂API的兼容性問題。segmentfault

如何實現接口的版本管理

對API進行版本管理目前已經有許多成熟的作法,好比:將版本信息放在URL中,或者放在HTTP消息頭中,甚至能夠放在URL參數或者消息體中(將版本信息放在HTTP消息頭裏,版本信息做爲URL參數或放在消息體中這三種方式無本質區別)。不一樣的版本管理方式實現難易程度各異,各有利弊。設計模式

  • 將版本信息放在URL中雖然破壞了REST的架構風格,可是因版本不一樣而帶來的變化在URL中就能體現,更加直觀。
  • 將版本信息方在HTTP請求頭,URL參數甚至消息體中,好處是保持URL不變,可是API實現者須要解析傳遞的版本參數調用不一樣的實現方法。

項目實戰

在基於Spring MVC(如Spring Boot)的項目中使用將版本信息放在URL中的方式進行版本管理,這樣作是基於以下幾點考慮:api

  1. API的變化直接在URL中體現,直觀明瞭,也不用解析版本參數。
  2. 對應不一樣版本的URL可能須要傳遞不一樣的參數,這樣對於API實現者而言是在不一樣的Controller方法中解析的,不用考慮在解析請求參數時的兼容性,實現簡單;並且從設計模式上能夠實現擁抱變化。
  3. Spring MVC框架對於在URL中體現版本信息這種方式原生支持就比較好,不須要作其餘適配工做。

【參考】
http://www.javashuo.com/article/p-eyvotfrx-gx.html RESTful API版本控制策略
http://www.lexicalscope.com/blog/2012/03/12/how-are-rest-apis-versioned/ How are REST APIs versioned?
https://blog.csdn.net/hengyunabc/article/details/20506345 Web API 版本控制的幾種方式
http://www.javashuo.com/article/p-byfmueen-kh.html 怎麼作 Web API 版本控制?架構

相關文章
相關標籤/搜索