Gestion par URL
Préfixe /v1, /v2 dans les URLs. Stratégie la plus lisible, cache réseau facile, utilisable sans configuration particulière.
- /v1, /v2 clairs
- Cache compatible
- Sans en-têtes spéciaux
- URLs séparées
Stratégies de gestion des versions honnêtes : URL (/v1, /v2), en-têtes signalant les fins de vie, politiques de retrait annoncées à l'avance, migration accompagnée des clients. Vos intégrateurs ont le temps de migrer, pas de mauvaises surprises.
Préfixe /v1, /v2 dans les URLs. Stratégie la plus lisible, cache réseau facile, utilisable sans configuration particulière.
En-têtes techniques standards signalant la date de retrait et le lien vers la nouvelle version, dans chaque réponse des points d'accès obsolètes.
Les deux versions tournent en parallèle. Même code métier, deux présentations distinctes pour les consommateurs.
Suivi des appels par version, par client. Tableau de bord qui montre qui consomme quoi. Permet de relancer les retardataires avant la date limite.
Journal structuré versionné avec le code, abonnements par flux RSS et email pour les consommateurs enregistrés.
Comparaison entre v1 et v2 générée automatiquement : quels points d'accès ont bougé, quels champs sont renommés, exemples de migration.
final class DeprecationHeaderListener
{
public function __construct(
private readonly \DateTimeImmutable $sunset,
) {}
public function onResponse(ResponseEvent $event): void
{
$request = $event->getRequest();
if (!str_starts_with($request->getPathInfo(), '/api/v1')) {
return;
}
$response = $event->getResponse();
$response->headers->set('Deprecation', 'true');
$response->headers->set('Sunset', $this->sunset->format(\DateTime::RFC7231));
$response->headers->set('Link', '</api/v2/>; rel="successor-version"');
}
}
Un écouteur ajoute les en-têtes techniques standards sur tous les points d'accès v1, pour signaler la date de retrait à 12 mois.
Votre API actuelle devient /v1, structure en place pour les versions futures, en-têtes de fin de vie, journal des nouveautés.
Conception de la v2 avec les évolutions cassantes souhaitées, coexistence v1/v2, guide de migration, support des intégrateurs.
Revue trimestrielle : évolutions cassantes à venir, état de santé des versions, relance des intégrateurs en retard.
Tarifs sur devis après cadrage · forfait ou régie selon le format
URL (/v1, /v2) dans 90 % des cas : lisible, simple, compatible avec les caches. En-tête spécifique pour les clients sophistiqués. Sous-domaine (v2.api.mycompany.com) pour les refontes majeures.
Seulement pour des évolutions cassantes inévitables : renommage de ressources centrales, changement de modèle de données, évolution majeure de l'authentification. Les ajouts non cassants (nouveaux champs) ne nécessitent jamais de v2.
Minimum 12 mois après l'annonce du retrait. Pour des API critiques (finance, santé), plutôt 24 mois. En-têtes signalant le retrait obligatoires dès l'annonce.
Journaux structurés avec la version, tableau de bord. Pour les API avec clés : suivi par client. Pour les API publiques : par navigateur + IP. Export CSV pour relances.
Si c'est une faille de sécurité, pas le choix : annonce urgente, période de grâce réduite (2 à 4 semaines), support renforcé aux intégrateurs. Sinon, toujours nouvelle version majeure.
Idéalement 2 (version actuelle + précédente). 3 en transition. Au-delà, la charge mentale explose. Si les intégrateurs traînent, on aligne les incitations : v1 avec limitation d'appels agressive, tarification différenciée.
Un appel, pas un formulaire de 12 champs. Vous m'expliquez votre besoin, je vous dis honnêtement si je suis la bonne personne, on repart avec une prochaine étape claire.