For the complete documentation index, see llms.txt. This page is also available as Markdown.

Versioning

Etant donné que les APIs ReST sont conçues pour être utilisées par de multiples sources (clients mobiles / web / desktop / partenaires / public…), elles évoluent souvent à un rythme différent de celui des clients.

Pour s'adapter au changement, il y a trois principales approches :

  • Versioning par Media Type.

  • Versioning par URL.

  • Pas de versioning (la solution à privilégier tant que possible).

https://blog.apisyouwonthate.com/api-versioning-has-no-right-way-f3c75457c0b7

Versioning par Media Type

Le versioning par Media Type consiste à utiliser le comportement standard des headers HTTP Accept et Content-Type.

Le client indique alors la version de l’API qu’il supporte dans le header Accept : Accept: application/vnd.wishtack.v3+json

L’API retourne alors les données dans la version correspondante avec le bon Media Type dans le header Content-Type.

  • Séduisant mais légèrement complexe à mettre en place.

  • Comment faire si la nouvelle version est implémentée dans un langage différent ou encore sur une plateforme différente ?

  • Nous serions alors obligé d’utiliser un connecteur pour effectuer le balancing. https://github.com/Kong/kong/issues/402

Versioning par URL

Vu l’obstacle de balancing posé par le versioning par Media Type, pourquoi ne pas utiliser un balancing standard en amont… mais lequel ?

Nous pourrions utiliser le path de l’URL et procéder au balancing en fonction du nom de domaine. Cela nécessite toujours un connecteur : https://getkong.org/docs/0.13.x/proxy/#request-path mais c'est une approche un peu plus classique et plus facile à configurer.

Qui dit mieux ?

Yes ! Le DNS ! https://v1.api.wishtack.com NodeJS hosted on Amazon. https://v2.api.wishtack.com Python hosted on Heroku. https://v3.api.wishtack.com Python hosted on Heroku sur un monorépo avec l’API V2.https://v4.api.wishtack.com Serverless functions sur un monorépo avec l’API V2 et V3.

Mis à jour