HATEOAS : une API qui indique les actions disponibles
Une réponse hypermédia contient des données, des liens et des actions. Le client suit ces indications, tout en partageant un vocabulaire clair avec le serveur.
Article
GET sert souvent les vues de lecture, tandis que les écritures demandent une décision métier. REST et CQRS se combinent sans imposer le même découpage.
La fiche d'une commande réunit son contenu, le nom du client et son état de livraison. Son annulation suit pourtant des règles qui appartiennent au domaine des commandes. L'API peut présenter ces informations ensemble tout en dirigeant la demande d'annulation vers le modèle qui sait la valider. C'est une manière de combiner REST et CQRS.
CQRS sépare les modèles utilisés pour les commandes et les lectures. REST définit des contraintes d'architecture pour les échanges entre clients et serveurs. L'un n'impose pas l'autre.
Dans une API HTTP, un GET peut être servi par le modèle de lecture. Une demande de changement, portée par POST, PUT, PATCH ou DELETE, peut déclencher une commande métier.
Cette correspondance aide à organiser le code, mais elle n'est pas une équivalence stricte. Une recherche complexe peut utiliser POST sans devenir une décision métier. Il faut alors préciser ses propriétés, notamment de cache et de reprise.
Un GET ne doit pas demander une action comme supprimer une facture. Des robots, des caches ou des mécanismes de préchargement peuvent consulter une adresse sans intention de déclencher cette action.
Le serveur peut néanmoins écrire un journal d'accès : cet effet technique ne change pas le sens de la lecture demandée. La sûreté de la méthode porte sur ce que le client demande de faire.
L'idempotence est une autre propriété. PUT et DELETE la promettent ; une opération PATCH peut être conçue comme idempotente, mais ne l'est pas automatiquement.
Un agrégat regroupe les données dont le domaine protège les règles ensemble. Une ressource d'API représente ce que le client consulte ou manipule. Les deux peuvent correspondre, sans que ce soit obligatoire.
La fiche d'une commande peut assembler plusieurs sources pour éviter au client de réaliser de nombreux appels. Sa modification ne signifie pas pour autant que tous ces éléments peuvent être changés dans une seule opération.
Les actions disponibles doivent indiquer leur portée : modifier une adresse, annuler une commande ou demander un remboursement sont des intentions différentes.
Le client peut avoir lu un état ancien. Un contrôle de concurrence permet au serveur de refuser une modification fondée sur une version dépassée.
Le contrat peut utiliser un champ de révision ou un validateur HTTP avec If-Match. Une précondition HTTP non satisfaite conduit à 412 ; un conflit applicatif peut être décrit par 409. L'article sur les écritures concurrentes détaille la reprise.
Le validateur doit porter sur la représentation ou les données réellement protégées. Avec PUT, HTTP impose aussi des conditions à l'émission d'un validateur dans la réponse si le serveur a transformé les données reçues avant de les enregistrer. Cela ne rend pas obligatoire un champ de révision dans toutes les API.
Une commande peut être enregistrée alors que sa projection de lecture n'est pas encore actualisée. La réponse à l'écriture peut fournir l'état confirmé ou un moyen de le consulter, en précisant le délai éventuel de la vue.
202 Accepted signifie que la demande a été acceptée pour traitement, sans que celui-ci soit achevé. Il convient à un travail encore en cours, pas automatiquement à toute projection en retard.
Un lien de suivi et un statut explicite permettent au client de distinguer l'acceptation de la demande, sa réussite métier et son apparition dans une liste.
Une représentation peut proposer « annuler » lorsque la commande semble encore annulable. Ces contrôles hypermédia aident le client à découvrir le parcours.
Le serveur vérifie de nouveau les droits et l'état à l'exécution. Entre la lecture et l'appel, la commande peut avoir été expédiée. Le client doit donc comprendre aussi le refus.
Une API claire relie ainsi trois éléments : l'information disponible, la décision demandée et son résultat. Le modèle interne reste libre d'évoluer tant que ce contrat est respecté.
Explorer
Choisis dans l’index d’après les étiquettes de cet article — les plus proches d’abord, hors de sa série. Rien n’est écrit à la main : un article publié demain avec les mêmes étiquettes y prendra place.
Une réponse hypermédia contient des données, des liens et des actions. Le client suit ces indications, tout en partageant un vocabulaire clair avec le serveur.
Avec htmx, le serveur renvoie des fragments HTML prêts à afficher. Cette approche simplifie certains écrans, avec des limites pour les usages très riches.
Un agent peut suivre les liens et les actions d’une API hypermédia. Voici comment cela fonctionne, ce que MCP apporte et les critères utiles pour choisir.
Laisser un commentaire
Votre commentaire sera relu avant d'être publié.