1. 程式人生 > >細說RESTFul API之版本管理

細說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 版本控制