Symfony 8.2 introduit des possibilités de versionnement d'API sans duplication des classes ni transformation manuelle des réponses. Le Serializer permet d'associer #[SerializedName] et #[SerializedPath] à des groupes de sérialisation pour adapter les noms et la structure des champs selon la version. L'option ignored_groups facilite l'exclusion de propriétés. L'article détaille les pièges de configuration, recommande des tests stricts des contrats JSON et précise quand conserver des classes distinctes, notamment lorsque la logique métier ou les validations divergent.
L'auteur explique qu'il a récemment dû mettre à jour son API vers une nouvelle version tout en maintenant l'ancienne pour les clients existants. Il a d'abord pensé à utiliser /v1/products pour la version actuelle et /v2/products pour la nouvelle, mais cette approche viole les principes REST et complique la maintenance. Les URL versionnées créent un couplage serré avec les clients, rendant difficile la gestion des versions obsolètes et entraînant une duplication de code. Une alternative RESTful consiste à utiliser les en-têtes HTTP pour négocier les versions, ce qui permet de maintenir des URI stables et de faciliter la compatibilité ascendante. Cependant, cette méthode nécessite que les clients configurent les en-têtes, ce qui peut être non trivial avec certains outils ou bibliothèques.
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre