春ブーツMicroservice APIバージョンの実装

user3495691:

基本的に(下位互換性はありません)の変更を壊している春ブーツMicroservice、既存の契約(要求/応答ペイロード)を、変更する必要があります。そして、いくつかの時間までの契約の両方のバージョンをサポートするために不可欠である - 時間まで、すべてのクライアントが新しいバージョンに自分自身をアップグレードします。

これを達成するためには、URLが戦略をバージョン使用することを決定された(/ V1 / {リソース}及び/ V2 / {リソース}等)。

さて、問題は、コード内でこれを実装するための最良の方法は何であるのか?下の2つの提案されたソリューションは、

  1. バージョン1(外支店/ V1)のコードと、このバージョンがサポートされるまで別々に維持します。本質的にこのこのブランチからマスタービルド/デプロイから枝を切断し、同じサービスの2つのインスタンスが各支持維持することを意味し、V1V2のそれぞれのバージョンを。

  2. 同じマスターブランチには、(のような別のパッケージを導入service.api.v2.requestを)し、そこにすべてのAPIのペイロード要求/応答のクラスを入れて、サポート(新しいエンドポイントコントローラを導入/ V2)。このアプローチは、両方のバージョンをサポートするための単一のインスタンスを可能にします。

上記のどちらがより良い方法ですか?それともこれを達成するための他の標準的な/より良い選択肢はありますか?DOES春ブーツは、このようなニーズに対応するボックスのサポートのいずれかのうちを提供しますか?

クリス:

これは、コントローラの後ろにありますどのくらいの共通性によって決まります。バージョンは、バックエンドに至るまですべての方法を大幅に異なっている場合は、おそらく異なるブランチは、との仕事に簡単ですが、主な違いは、コントローラのパスであり、入力と出力は、これらの方法に関連するオブジェクト場合、2つの分岐はする可能性があります両方への変更を適用し、そのたびに行うために覚えているの痛みにつながる - それは遅かれ早かれ、重要な修正プログラムは見逃すことになるような状況のようなものです。

これは、すべてのバランスだし、あなたはミスのも時間と労力の面で、あなたのケースで近づき、リスクだけでなく、別の展開のコストのメンテナンスコストを比較検討する必要があります。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=400965&siteId=1