AFAIK Fielding n'a pas prétendu que REST était bon, il décrivait simplement l'architecture de facto du Web.
Je pense que cela le sous-estime un peu. REST est, après tout, une énumération du style architectural que Fielding utilisait comme architecte en chef de la spécification HTTP / 1.1 .
Mais y a-t-il réellement une raison de penser que REST est une architecture souhaitable pour ce domaine? Existe-t-il des preuves que HATEOAS est un principe de conception bénéfique pour la communication de machine à machine?
"Ça dépend". HATEOAS fait partie de la contrainte d' interface uniforme de REST.
En appliquant le principe de généralité du génie logiciel à l'interface des composants, l'architecture globale du système est simplifiée et la visibilité des interactions est améliorée. Les implémentations sont dissociées des services qu'elles fournissent, ce qui encourage une évolutivité indépendante. Le compromis, cependant, est qu'une interface uniforme dégrade l'efficacité, car les informations sont transférées sous une forme standardisée plutôt que spécifique aux besoins d'une application. L'interface REST est conçue pour être efficace pour le transfert de données hypermédia à gros grain, optimisée pour le cas commun du Web, mais résultant en une interface qui n'est pas optimale pour d'autres formes d'interaction architecturale.
Alors réfléchissons un instant à ce que cela signifie. Lorsque je rencontre des problèmes avec mon routeur sans fil, je peux communiquer avec lui en utilisant le même navigateur que j'utilise pour envoyer des réponses à stackexchange. En particulier, peu importe le navigateur que j'utilise ou si mon navigateur est à quelques mises à jour derrière (ou devant) ce que le routeur attend. Peu importe que l'organisation d'ingénierie qui a écrit le navigateur soit complètement indépendante de l'organisation qui a créé l'interface du routeur.
Ça marche juste .
Ce n'est bien sûr pas universel. Fielding, en 2008 , a écrit:
Cela ne signifie pas que je pense que chacun devrait concevoir ses propres systèmes selon le style architectural REST. REST est destiné aux applications réseau à longue durée de vie couvrant plusieurs organisations. Si vous ne voyez pas la nécessité des contraintes, ne les utilisez pas.
Les contraintes qui forment le style architectural REST ont été choisies pour les propriétés qu'elles induisent; si ces propriétés ne sont pas utiles à votre cas d'utilisation, vous devez absolument envisager de supprimer les contraintes correspondantes.
Là où la machine à machine devient difficile, c'est que vous avez perdu la capacité de l'être humain à faire correspondre de manière floue la sémantique fournie par les représentations. Les clients peuvent se débrouiller en ne connaissant que les types de médias, mais nous avons normalement un être humain qui regarde les indices sémantiques pour en tirer un sens.
schema.org fait partie d'un effort pour créer un vocabulaire lisible par machine; les agents de la machine utilisent le client pour trouver les indices sémantiques et appliquent sa propre compréhension du sens pour choisir les actions correctes à entreprendre.
Mais c'est du travail; vous devez investir dans le développement de représentations de vos ressources conviviales pour les machines, et vous assurer que ces représentations restent compatibles en amont et en aval, afin que les clients puissent être développés indépendamment.
Lorsqu'une seule organisation contrôle à la fois le client et le serveur, les avantages de cette indépendance sont beaucoup plus faibles, auquel cas la contrainte peut ne pas être un choix architectural approprié.