Guides pratiques

Documenter et tester une API à partir des usages

Une API utile permet à une autre équipe de comprendre ce qu’elle peut demander et ce qu’elle recevra. Son contrat doit être testable, versionné et cohérent avec le service réellement exploité.

Voir la méthode

Une API avec un contrat

Choisir les tâches avant les adresses

Recensez les usages : chercher un produit, lire une disponibilité, mettre à jour une fiche ou suivre un traitement. Définissez les personnes et systèmes autorisés pour chaque opération. Une API publique en lecture et une API d’administration n’ont pas les mêmes règles d’accès.

Préparez un exemple de demande et de réponse pour chaque tâche essentielle, avec des valeurs fictives et des champs expliqués. Distinguez identifiant stable, libellé, unité et date. Indiquez les données absentes et évitez de remplacer une information inconnue par une valeur plausible.

Décrire un contrat explicite

OpenAPI fournit un format de description des API HTTP indépendant du langage. Il permet de décrire les opérations, paramètres, réponses et modèles. Choisissez une version prise en charge par vos outils et conservez le document avec le projet ; la version la plus récente n’est pas automatiquement la bonne pour chaque chaîne.

Complétez le contrat avec limites d’usage, pagination, filtre, ordre, états d’erreur et exemple de réponse vide. Ne traitez pas CORS comme une preuve d’autorisation : vérifiez les contrôles d’accès propres à chaque opération et chaque objet avec l’équipe technique.

Tester les limites et les permissions

Essayez un objet présent, un objet absent, un paramètre invalide et une liste plus longue qu’une page. Vérifiez que le passage à la page suivante ne perd ni ne répète les objets dans le contexte de mise à jour choisi. Décrivez les limites que votre API ne peut pas garantir.

Utilisez des comptes de test aux droits différents. Tentez une consultation ou modification hors du périmètre autorisé, sans données réelles. Conservez le statut attendu et un message utile, sans révéler au destinataire une trace interne ou un secret de configuration.

Prévoir évolutions et support

Distinguez un champ ajouté d’un champ supprimé ou dont le sens change. Recensez les consommateurs avant une modification incompatible. Expliquez la période de transition et le moyen de vérifier qu’une intégration utilise encore l’ancien contrat.

Livrez un exemple qui s’exécute dans un environnement d’essai, une matrice de tests et un contact technique. Après publication, rapprochez les erreurs observées des exemples documentés. Une documentation qui décrit seulement le cas idéal laisse les intégrateurs seuls face aux refus et interruptions.

Documentation primaire : OpenAPI Initiative — Specification.

Matrice de recette à adapter au projet

Ces contrôles proposés utilisent des cas fictifs. Décidez du comportement attendu avec l’équipe, notez le résultat et attribuez les écarts non résolus avant publication.

Cas de test, résultats attendus et preuves utiles
CasRésultat attenduPreuve à conserver
Ressource présente et absenteChaque résultat correspond au statut et au modèle documentés.Requête, réponse et exemple du contrat associé.
Paramètre hors limitesLe refus est compréhensible et ne révèle pas de trace interne.Message public et résultat conservé dans la matrice.
Deux niveaux de droitsUne ressource interdite reste inaccessible malgré un identifiant connu.Comparaison des résultats pour les deux comptes fictifs.
Suite paginée et filtre modifiéLe comportement du jeton et la reprise du parcours sont définis.Ordre, identifiants obtenus et règles de changement de filtre.

Questions fréquentes

La documentation générée suffit-elle à tester une API ?

Elle aide à lire un contrat, mais il faut aussi vérifier permissions, données absentes, erreurs, listes et évolutions. Confrontez les exemples aux réponses réelles d’un environnement de test.

CORS remplace-t-il les droits d’accès ?

Non. Les règles de partage entre origines ne remplacent pas le contrôle des opérations et objets autorisés par le service. Décrivez ces droits puis testez-les côté serveur avec des comptes d’essai.