HATEOAS (Hypermedia as the Engine of Application State) Une introduction



  • C'est un composant de l'architecture d'application REST qui la distingue des autres architectures d'application réseau. "Hypermédia" est un terme faisant référence à tout contenu contenant des liens vers d'autres formes de médias tels que des images, des films et du texte.
  • Il facilite la création facile de représentations REST par certaines API qui suivent le principe HATEOAS lorsqu'elles travaillent avec Spring et en particulier Spring MVC.
  • Dans le style architectural REST, nous pouvons utiliser les liens hypermédias dans le contenu de la réponse. Cela signifie qu'en traversant les liens hypermédias, le client peut naviguer dynamiquement vers les ressources appropriées.
  • La navigation dans les liens hypermédias fonctionne sur le concept similaire d'un internaute parcourant des pages Web en cliquant sur les liens hypertextes pertinents pour atteindre un objectif final.
Prenons un exemple. En supposant que nous ayons un service REST qui fournit différentes descriptions de produits ; pensez à certains sites de commerce électronique. Si nous obtenons une réponse JSON avec un produit de ce site Web avec l'aide de HATEOAS, cela pourrait ressembler à ceci:

========


{
    "productId": 123
    "productName": "Telé XYZ",
    "description": "La meilleure télé de la planète."
    "links": [{
        "rel": "self",
        "href": "http://localhost:8080/magasin/api/produits/123"

    }, {
        "rel": "details",
        "href": "http://localhost:8080/magasin/api/produits/123/details"

    }, {
        "rel": "ajoutPanier",
        "href": "http://localhost:8080/magasin/api/AjoutPanier/123"

    }]
}
Bon, alors, c'est du JSON avec des attributs qui sont des liens. Ça change quoi? La sémantique: rel et href

rel-
Il signifie « relation » et explique comment le lien se rapporte à l'objet que nous avons demandé. 
  • self – ce qui signifie que ce lien nous amène à l'objet, 
  • details – signifie que des informations détaillées sont disponibles, 
  • ajoutPanier – indique le processus d'ajout de ce produit à un panier.
href –
Une URL complète qui montre comment l'action peut être effectuée.

HATEOAS réduira le besoin de configurer les points de terminaison d'URL, ce qui est une bonne chose. Toutes ces URL (dans l'exemple) nous indiquant :
  • comment rechercher les détails du produit ? 
  • Comment ajouter un produit au panier ? 

Nous n'en avons pas besoin codés en dur ou dans certains fichiers de configuration. Ils sont fournis par l'application. Si nous voulons vraiment avoir quelque chose dans nos fichiers de configuration, nous pouvons y placer les relations rel–. Dans toute application, nous avons différents appels d'API REST. Cela en fait un véritable avantage en quelque sorte.

Commentaires

Posts les plus consultés de ce blog

Github quelques statistiques

Notion de logique