Exemples réels pour HATEOAS (architecture REST) ​​

Comme tout le monde l’a peut-être remarqué, il existe de nombreuses API REST rudimentaires / fictives (qui implémentent une API HTTP et l’appellent REST sans respecter les exigences de au célèbre discours de Roy T. Fielding , l’homme qui a défini le premier paradigme REST.

Je n’ai pas été en mesure de trouver d’exemples pratiques d’une implémentation REST basée sur l’hypertexte avec les définitions de type de média spécifiques à l’application associées pour les transitions d’état.

Existe-t-il des exemples accessibles au public de ces implémentations?

Ce n’est pas une implémentation dans le sens de l’exécution de code, mais j’aime vraiment l’article ” Comment obtenir une tasse de café ” sur InfoQ. Il décrit le processus de commande d’un café chez Starbucks en tant que protocole RESTful. Cela va au-delà de l’article introductif REST type “tout est une ressource” et se concentre sur HATEOAS. Hautement recommandé.

Qu’en est-il de l’ API Sun Cloud ? De l’introduction:

L’API ne présuppose aucune structure particulière dans l’espace URI. Le sharepoint départ est un URI, fourni par le fournisseur de services cloud, qui identifie le cloud lui-même. La représentation du cloud contient des URI pour les autres ressources du cloud, ainsi que pour les opérations pouvant être effectuées sur ces dernières (par exemple, le déploiement et le démarrage de machines virtuelles).

L’ histoire pourrait également être utile.

Netflix a une API REST basée sur HATEOAS qui inclut des liens dans les ressources.

Je me suis rendu compte que cela avait été demandé il y a quelque temps, mais j’ai essayé de démontrer un stream d’API REST “correct” pour un exemple simple. J’ai essayé de suivre les règles de Roy pour REST – cela pourrait peut-être aider: Exemple d’API utilisant REST

Le caractère fiable de l’API Sun Cloud n’est-il pas réellement pris en compte dans le quasortingème sharepoint Roy:

Une API REST ne doit pas définir de noms de ressources ou de hiérarchies fixes (un couplage évident entre client et serveur). Les serveurs doivent avoir la liberté de contrôler leur propre espace de noms. Au lieu de cela, autorisez les serveurs à indiquer aux clients comment construire des URI appropriés, comme dans les formulaires HTML et les modèles d’URI, en définissant ces instructions dans les types de média et les relations de liens. [L’échec ici implique que les clients supposent une structure de ressources due à des informations hors bande, telles qu’une norme spécifique au domaine, qui est l’équivalent orienté données du couplage fonctionnel de RPC].

Exemple 1 Noms de ressources fixes dans un inheritance défini:

A partir de l’API Sun Cloud: “… la représentation d’un VDC inclura des représentations des clusters qui l’habitent, qui à leur tour incluent des représentations des VM dans chaque cluster.”

Exemple 2 informations hors bande, telles qu’une norme spécifique à un domaine:

Vous devez avoir le contenu de la page wiki (informations hors bande) pour savoir que le “mécanisme de communication des ressources” pour le champ de ressource Cloud “uri” est GET.