細說RESTful API之版本管理


目錄

接口實現版本管理的意義

API版本管理的重要性不言而喻,對於API的設計者和使用者而言,版本管理都有着非常重要的意義。
首先,對於API的設計和實現者而言,需要考慮向后兼容性,但是隨着業務的發展或需求的變更往往會導致兼容性實現非常復雜,因此引入API版本管理將能解決這個尷尬。此時可以提供多個版本的API實現,不需要再為了向后兼容性而絞盡腦汁。
其次,對於API的使用者而言,也可以靈活選擇使用不同版本API,而不用擔心API的兼容性問題。

如何實現接口的版本管理

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

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

項目實戰

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

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

【參考】
https://segmentfault.com/a/1190000006165182 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 版本控制的幾種方式
https://juejin.im/post/5a0bd3e3f265da431047eabf 怎么做 Web API 版本控制?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM