Une fonctionnalité très attendue dans Spring Boot 4 : la gestion native du versioning d’API. 👇
Jusqu’à présent, quand je voulais maintenir plusieurs versions de mon API, c’était souvent synonyme de solutions de contournement pas toujours élégantes. Il fallait jongler avec des URLs comme /v1, /v2, des headers maison, ou encore intégrer des bibliothèques externes pour gérer proprement les différentes versions. Ce n’était jamais totalement satisfaisant.
Avec Spring Boot 4 (et Spring Framework 7 en dessous), ça devient enfin beaucoup plus simple : on peut maintenant définir une version directement dans l’annotation @RequestMapping grâce à un attribut version. Et surtout, c’est personnalisable : on peut choisir de faire passer la version dans l’en-tête HTTP (par exemple X-API-Version), dans un paramètre d’URL, ou même dans le chemin.
Ce que j’apprécie vraiment, c’est qu’on reste dans l’esprit Spring : c’est clair, structuré, et intégré au framework. Plus besoin d’empiler les solutions maison pour quelque chose d’aussi fondamental.
Alors oui, c’est encore en phase expérimentale mais ça ouvre des perspectives intéressantes pour la conception d’APIs évolutives, en particulier dans des environnements où la compatibilité descendante est critique.
J’ai hâte de tester cette approche sur mes prochains projets.
Mhhhh c'est pas risqué ? Dans le sens où tu as juste une annotation, ta v1 peut se retrouver en v1.1 sans le vouloir si ta v1 appelle une méthode qui a été modifiée dans ta v2 ? Alors, normalement tu as des tests pour te lever de l'alerting, mais je trouve ça bizarre d'avoir un versionning dynamique et non statique, même dangereux non ?
Passionate by Artificial Intelligence, Data Science, and secure Web Development
1 month ago
Salut Philémon, merci pour ce partage intéressant sur le versionnement d'API avec les en-têtes HTTP ! J’aime beaucoup cette approche, pour sa simplicité côté client.
Je voulais juste savoir, dans un contexte où l’API doit évoluer de manière plus contractuelle ou être utilisée avec plusieurs types de clients (comme des outils ou des serveurs intermédiaires), si le versionnement par type MIME (via le header Accept) ne serait pas mieux? Cela permet de gérer plusieurs versions de manière plus fine avec des outils comme Swagger et des API Gateway.
Je serais curieux d’avoir ton avis sur cette approche, surtout en termes de maintenabilité et de standardisation dans un environnement avec de multiples versions d’API.