Sto scrivendo un'API Rest e mi sto chiedendo come gestire al meglio il supporto delle diverse versioni. Con questo non intendo come definire un URI come V2 o V3, ma piuttosto come strutturare il codice dato che sarebbe necessario:
- Supporta più versioni contemporaneamente, ad es. V1 e amp; V2 e amp; Gli URI V3 devono essere attivi allo stesso tempo. Ritirerei V1 quando dico V4 entra per limitare l'importo supportato in qualsiasi momento.
- Evita il più possibile la duplicazione del codice
- Semplifica l'aggiunta di modifiche senza interruzioni a una versione, senza influire sulle altre versioni
Sembrerebbe che ci siano pochi approcci che potrebbero essere presi:
-
Usa Git per controllare le versioni, con un ramo per le diverse versioni (e le vecchie versioni essenzialmente non hanno alcun nuovo lavoro di sviluppo fatto su di esso). Ciò significherebbe la duplicazione del codice in quanto solo la versione più recente è nel codice, ma le versioni precedenti avrebbero bisogno di lavorare con la nuova versione del DB fino a quando non saranno ritirate.
-
Duplica il codice in modo che ogni versione sia gestita nella stessa applicazione e abbia un percorso di codice completamente separato, ma ciò significherebbe un sacco di duplicazione
-
Riusare un sacco di codice attraverso le versioni, ma ciò renderebbe più difficile mantenere la modifica poiché una versione ha maggiori probabilità di influire su una versione precedente
C'è qualche buona pratica per affrontare questo problema poiché tutte le opzioni sembrano avere i loro problemi?