Nous allons donc avoir besoin de spécifier les changements de rétro-compatibilité à appliquer lorsqu'une version précédente est demandée.
Il nous faut alors implémenter une liste des versions dans la configuration de Symfony avec, pour chaque version, le namespace complet du fichier qui contient les versions à appliquer.
Editez alors le fichier app/config/parameters.yml
de votre projet (ou config/services.yaml
sous Symfony 4) et ajoutez-y l'entrée suivante sous parameters
:
parameters:
versions:
1.1.0: Acme\VersionChanges\VersionChanges110
1.0.0: Acme\VersionChanges\VersionChanges100
0.9.0: Acme\VersionChanges\VersionChanges009
0.8.0: Acme\VersionChanges\VersionChanges008
Nous spécifions une liste de la version la plus récente à la plus ancienne.
Les changements de rétro-compatibilité seront alors appliqués dans ce même ordre.
Ainsi, dans le cas ou un client ajoute un header X-Accept-Version: 0.9.0
dans ses requêtes, alors, les changements de rétro-compatibilité des versions seront joués respectivement dans l'ordre 1.1.0
, 1.0.0
puis 0.9.0
.
La version 0.8.0
ne devra quand à elle ne pas être jouée car elle correspond à un modèle encore plus ancien que celui demandé.
Cette configuration doit ensuite être interprêtée par Symfony et les changements nécessaires appliqués à la réponse de votre API en fonction de la version demandée.