HATEOAS en quelques mots : Dans les données que vous produisez, faites référence aux autres ressources en utilisant des URI, et non des ID.
Comme toutes les définitions courtes, la définition que je viens de donner est erronée à bien des égards, mais elle devrait vous faire comprendre ce qu'est l'essentiel de HATEOAS.
Maintenant, une explication un peu plus longue.
Selon le principe HATEOAS, l'état de votre application doit progresser grâce à des liens hypertextes. Imaginez que vous naviguez sur l'internet. Vous devez d'abord taper une adresse dans la barre d'adresse. À partir de ce moment-là, votre navigation n'avance pratiquement que grâce aux clics sur les liens : vous cliquez sur un lien et vous arrivez sur une autre page. Un autre clic et voilà une autre page qui apparaît. Comment le navigateur pouvait-il vous faire passer de la première page à la deuxième, puis à la troisième ? Il utilisait les URL codées dans <a>
éléments.
De même, si vos applications REST génèrent ce résultat
<accomodation>
<hotel info="http://example/hotel/0928374" price="200"/>
<guest-house info="http://example/guest-h/7082" price="87"/>
</accomodation>
alors l'application réceptrice n'aura pas besoin d'accéder à des sources de connaissances externes pour savoir que le premier hôtel est disponible à l'adresse http://example/hotel/0928374
et le second à http://example/guest-h/7082
.
D'un autre côté, si votre application génère des réponses avec des ID tels que
<accomodation>
<hotel id="0928374" price="200"/>
<guest-house id="7082" price="87"/>
</accomodation>
l'application réceptrice devra savoir à l'avance comment les ID doivent être composés avec des préfixes pour obtenir l'URI auquel les informations relatives à chaque logement sont disponibles (par exemple "ajouter http://example/
à chaque demande, puis ajoutez hotel
pour les hôtels et guest-h
pour les maisons d'hôtes" ). Vous pouvez constater que ce mécanisme est similaire à ce qui se passe dans de nombreuses applications de base de données, mais qu'il est différent du fonctionnement des navigateurs.
Il est important de suivre le principe HATEOAS car il permet aux applications de se développer sans que les applications réceptrices subissent des changements radicaux. Supposons que vous vouliez changer vos URIs de http://example.com/hotel/0928374
a https://reviews.example.com/accommodation/0928374
. Si vous suiviez HATEOAS c'est un simple changement : modifier les valeurs retournées et c'est tout : les applications réceptrices continueront à fonctionner sans aucune modification. Si, au contraire, vous aviez une documentation séparée sur la façon de construire les URI, vous devriez contacter tous les développeurs d'applications et leur demander de remarquer que la documentation a été mise à jour et qu'ils devraient modifier leur code pour refléter les changements.
Avertissement : il s'agit d'une réponse rapide qui ne fait qu'effleurer la surface du problème. Mais si vous avez compris cela, vous avez compris 80% du principe d'HATEOAS.
5 votes
Je vous suggère de lire le livre "REST in Practice".
0 votes
Court, doux et complet : blogs.oracle.com/craigmcc/entry/why_hateoas
0 votes
Le lien pour REST ne fonctionne plus. Je crois que la même conversation est disponible aquí .
1 votes
Pour l'information des lecteurs - HATEOAS est un acronyme pour
Hypermedia As The Engine Of Application State