HATEOAS

Définition, exemples et bonnes pratiques

À retenir

  • Le client n'a besoin de connaître qu'une seule adresse au départ (le point d'entrée).
  • Le serveur guide le client en lui indiquant ce qu'il a le droit de faire à chaque instant.
  • C'est le stade ultime de maturité pour une architecture REST.

HATEOAS est un principe de conception d'API qui permet à un logiciel de découvrir les actions possibles de manière dynamique, un peu comme un internaute navigue sur un site web en cliquant sur des liens. Au lieu que le développeur doive apprendre par cœur toutes les adresses techniques (URL) du système, c'est le serveur qui lui envoie, avec les données, la liste des étapes suivantes autorisées sous forme de liens.

Étymologie

Acronyme anglais pour Hypermedia As The Engine of Application State (l'hypermédia comme moteur de l'état de l'application). Ce concept a été défini par Roy Fielding en 2000 dans sa thèse jetant les bases de l'architecture REST.

Exemples d'usage

  • Une API bancaire qui affiche le solde d'un compte et propose dynamiquement un lien /virement si le compte est provisionné, mais ne le propose pas s'il est bloqué.
  • Un site de e-commerce qui renvoie les détails d'une commande avec des liens vers /annuler ou /suivre-colis selon l'état actuel de la livraison.

Cas d'usage

Ce concept intervient dans le développement d'API Web (RESTful) sophistiquées. Il est particulièrement utile pour créer des systèmes évolutifs où le serveur peut changer ses adresses internes sans casser les applications clientes, puisqu'elles se contentent de suivre les liens fournis.

Bonnes pratiques

Il est recommandé d'utiliser des noms de relations (rel) explicites et standardisés pour décrire les liens. Il faut éviter que l'application cliente ne construise elle-même ses adresses (URL) à la main (le fameux "hard-coding").

Synonymes

API hypermédia navigation hypermédia maturité REST niveau 3

Antonymes

URL codées en dur (hardcoded) API statique

Conseil

Pour bien comprendre HATEOAS, imaginez un jeu d'aventure textuel : le jeu ne vous donne pas la liste de toutes les commandes possibles du monde entier dès le début, il vous dit simplement : 'Vous êtes dans une grotte, vous pouvez SORTIR ou ALLUMER une torche'. HATEOAS, c'est exactement ça pour les logiciels.

Questions fréquentes

Pourquoi HATEOAS est-il rarement utilisé ?

Sa mise en œuvre est complexe et demande plus de travail au serveur et au client pour interpréter les liens dynamiquement.

Est-ce indispensable pour dire qu'une API est REST ?

Selon son créateur, oui. En pratique, beaucoup d'API se disent REST sans respecter cette contrainte précise.

Quel format de données supporte HATEOAS ?

Le JSON est le plus fréquent (avec des standards comme HAL ou JSON-LD), mais le format XML le permet également via les balises de lien.