Sto scrivendo un'API Rest e mi chiedo 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 avrebbe bisogno di:
- Supporta più versioni contemporaneamente, ad es. Gli URI V1 e V2 e V3 devono essere attivi contemporaneamente. Ritirerei V1 quando dico che V4 arriva al fine di limitare la quantità supportata in qualsiasi momento.
- Evita quante più duplicazioni di codice possibile
- Semplifica l'aggiunta di modifiche senza interruzioni a una versione, senza che ciò influisca su altre versioni
Sembrerebbe che ci siano pochi approcci che potrebbero essere adottati:
Usa Git per controllare le versioni, con un ramo per le diverse versioni (e le versioni precedenti essenzialmente non hanno fatto alcun nuovo lavoro di sviluppo su di esso). Ciò significherebbe non duplicare il codice poiché nel codice è presente solo l'ultima versione, ma le versioni precedenti dovrebbero funzionare con la nuova versione del DB fino a quando non vengono ritirate.
Codice duplicato in modo che ogni versione sia gestita nella stessa applicazione e abbia un percorso di codice totalmente separato, ma ciò significherebbe un sacco di duplicazioni
Riutilizzare molto codice tra le versioni, ma ciò renderebbe più difficile la manutenzione poiché la modifica di una versione ha maggiori probabilità di influire su una versione precedente
C'è qualche buona pratica per affrontare questo problema in quanto tutte le opzioni sembrano avere i propri problemi?