En bref

SemVer est un contrat, pas une décoration. Retirer un champ, changer son type — même de nullable à non-nullable — ou renommer un endpoint sont des changements MAJOR sans exception. Une dépréciation s'annonce trois mois à l'avance, avec documentation explicite et header dédié (RFC 8594), et l'ancien endpoint reste maintenu au moins six mois.

SemVer (Semantic Versioning) est un contrat, pas une décoration. Une API mal versionnée force ses consommateurs à casser leur code — ou à ne jamais mettre à jour. Les 4 règles à appliquer strictement en 2025.

Rappel : MAJOR.MINOR.PATCH. MAJOR = breaking. MINOR = nouvelle feature backward-compatible. PATCH = fix. Point.

Les 4 règles opérationnelles

  1. Un champ qu'on retire => MAJOR. Sans exception.
  2. Un champ qu'on ajoute => MINOR, avec valeur par défaut si obligatoire dans une v ultérieure.
  3. Un champ dont le type change => MAJOR (même de nullable à non-nullable).
  4. Un endpoint qu'on renomme => MAJOR, avec l'ancien maintenu 6 mois minimum.

Deprecation propre

Annoncer 3 mois avant, doc explicite, header Deprecation etSunset : RFC 8594. Vos consommateurs vous remercient.

Versionner dans l'URL ou header ?

  • /v1/users — plus simple, plus lisible dans les logs
  • Accept: application/vnd.mycompany.v1+json — plus « pur », moins lisible

Défaut : URL. Sauf raison forte, plus simple à débuguer.

Un breaking change annoncé 3 mois avant est un non-événement. Le même breaking change sans préavis, c'est votre plus gros client qui vous quitte.

On refont votre versioning ?

En 30 minutes on peut cadrer votre stratégie. Réservez un créneau. À lire : API REST ou GraphQL.

Un projet à lancer ou à sauver ?

30 min d'appel gratuit. On regarde ensemble ce qui bloque et par où commencer.

Réserver un appel découverte