En bref : une API de collecte efficace offre aux clients un moyen clair de demander des données, de poursuivre un parcours, de se remettre d’un échec et de savoir ce qui a été collecté. Ces conseils sur les API REST relient chaque contrat côté serveur au comportement qu’un consommateur fiable doit mettre en œuvre.
Un collecteur récupère trois pages, subit un délai d'expiration sur la quatrième et redémarre le lendemain matin. Qu'il ignore des enregistrements, duplique le travail ou reprenne en toute sécurité dépend des décisions prises bien avant ce délai d'expiration. Les conseils sur les API REST sont particulièrement utiles lorsqu'ils abordent ces décisions comme des contrats concrets entre le producteur et le consommateur.
Ce guide se concentre sur les API qui exposent des données en vue d’une collecte, d’une synchronisation ou d’une analyse récurrentes. L’objectif n’est pas de trancher tous les débats architecturaux concernant REST, mais de rendre l’interface prévisible lorsque les ensembles de données changent, que les identifiants expirent, que les requêtes échouent et que les clients effectuent des mises à niveau à des moments différents.
Pour chaque choix de conception, demandez-vous ce que le client doit conserver et ce qu’il peut déduire en toute sécurité. Un champ nommé next ne suffit pas si le curseur expire sans que cela soit documenté. Un message d’erreur ne suffit pas si les clients ne peuvent pas distinguer une surcharge temporaire d’une entrée non valide. Une réponse réussie ne suffit pas si elle modifie discrètement la signification d’un champ de prix.
Les sept sections ci-dessous traitent des contrats de ressources, de la pagination, de la gestion des échecs, des requêtes conditionnelles, du contrôle d’accès, de l’évolution des schémas et de la preuve opérationnelle. Elles fournissent également une liste de contrôle destinée aux développeurs utilisant une API qu’ils n’ont pas conçue : identifiez ce que l’interface garantit, puis rendez visible chaque garantie manquante dans le plan de collecte.




