簡體   English   中英

Spring 啟動微服務 API 版本控制實現

[英]Spring Boot Microservice API Versioning Implementation

需要修改 Spring 引導微服務的現有合約(請求/響應負載),這本質上是重大更改(不向后兼容)。 並且必須在一段時間內支持合同的兩個版本 - 直到所有客戶端都將自己升級到更新版本。

為了實現這一點,已決定使用 URL 版本控制策略(如 /v1/{resource} 和 /v2/{resource})。

現在,問題是在代碼中實現這一點的最佳方法是什么? 以下是兩個建議的解決方案

  1. 分支出版本一 ( /v1 ) 代碼並單獨維護它,直到支持此版本。 這實質上意味着從 master 中刪除分支並從此分支中構建/部署,並維護同一服務的兩個實例,每個實例分別支持v1v2版本。

  2. In the same master branch, introduce a separate package (like service.api.v2.request ) and put all the api payload request/response classes in there and introduce a new endpoint controller to support ( /v2 ). 這種方法使單個實例能夠支持這兩個版本。

以上哪一個是更好的方法? 或者是否有任何其他標准/更好的選擇來實現這一目標? Spring Boot 是否為此類需求提供開箱即用的支持?

這取決於controller背后有多少共性。 如果版本一直到后端都顯着不同,那么不同的分支可能更容易使用,但如果主要區別在於 controller 路徑以及這些方法中涉及的輸入和 output 對象,則可能有 2 個分支導致對兩者都應用更改並記住每次都這樣做的痛苦-這種情況遲早會錯過重要的修復。

這一切都是一種平衡,您需要根據時間和精力來權衡方法的維護成本,以及錯誤風險以及單獨部署的成本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM