J'écris une API Rest et je me demande comment gérer au mieux la prise en charge des différentes versions. Par cela, je ne veux pas dire comment définir un URI comme V2 ou V3, mais plutôt comment structurer le code étant donné qu'il devrait:
- Prend en charge plusieurs versions en même temps, par exemple. Les URI V1 & V2 & V3 doivent être en direct en même temps. Je retirerais V1 lorsque disons que V4 arrive afin de limiter le montant pris en charge à un moment donné.
- Évitez autant de duplication de code que possible
- Facilitez l'ajout de modifications incessantes à une version, sans impact sur les autres versions
Il semblerait qu'il existe peu d'approches possibles:
Utilisez Git pour contrôler les versions, avec une branche pour les différentes versions (et les anciennes versions n'ayant essentiellement aucun nouveau travail de développement). Cela signifierait aucune duplication de code car seule la dernière version est dans le code, mais les versions précédentes devraient fonctionner avec la nouvelle version de la base de données jusqu'à ce qu'elles soient retirées.
Dupliquer le code afin que chaque version soit gérée dans la même application et ait un chemin de code totalement séparé, mais cela signifierait beaucoup de duplication
Réutilisez beaucoup de code dans les versions, mais cela rendrait la maintenance plus difficile, car la modification d'une version est plus susceptible d'avoir un impact sur une version précédente
Existe-t-il une meilleure pratique pour résoudre ce problème, car toutes les options semblent avoir leurs propres problèmes?