Ich schreibe eine Rest API und frage mich, wie ich mit der Unterstützung der verschiedenen Versionen am besten umgehen kann. Damit meine ich nicht, wie man einen URI als V2 oder V3 definiert, sondern wie man den Code strukturiert, vorausgesetzt, er müsste:
- Unterstützt mehrere Versionen gleichzeitig, z. V1-, V2- und V3-URIs müssen gleichzeitig aktiv sein. Ich würde V1 in den Ruhestand versetzen, wenn V4 eingeht, um die zu einem bestimmten Zeitpunkt unterstützte Menge zu beschränken.
- Vermeiden Sie so viele Code-Duplikate wie möglich
- Erleichtern Sie das Hinzufügen von Änderungen an einer Version, ohne dass dies Auswirkungen auf andere Versionen hat
Es scheint, dass es nur wenige Ansätze gibt, die ergriffen werden könnten:
Verwenden Sie Git, um die Versionen zu steuern, mit einer Verzweigung für die verschiedenen Versionen (und alten Versionen, an denen im Wesentlichen keine neuen Entwicklungsarbeiten durchgeführt wurden). Dies würde bedeuten, dass der Code nicht doppelt vorhanden ist, da sich nur die neueste Version im Code befindet. Vorherige Versionen müssten jedoch mit der neuen Version der Datenbank arbeiten, bis sie ausgemustert sind.
Code duplizieren, sodass jede Version in derselben Anwendung verarbeitet wird und einen völlig separaten Codepfad hat, dies würde jedoch eine Menge Duplizierung bedeuten
Verwenden Sie viel Code für alle Versionen erneut, dies würde jedoch die Wartung erschweren, da das Ändern einer Version eher Auswirkungen auf eine frühere Version hat
Gibt es eine bewährte Methode, um mit diesem Problem umzugehen, da alle Optionen ihre eigenen Probleme zu haben scheinen?