AFAIK Fielding behauptete nicht, dass REST etwas Gutes sei, sondern beschrieb lediglich die De-facto-Architektur des Webs.
Das unterbietet es ein bisschen, würde ich denken. REST ist immerhin eine Aufzählung des architektonischen Stils , dass Fielding wurde mit als Chefarchitekt der HTTP / 1.1 - Spezifikation .
Aber gibt es tatsächlich einen Grund zu der Annahme, dass REST eine wünschenswerte Architektur für diese Domäne ist? Gibt es Hinweise darauf, dass HATEOAS ein nützliches Konstruktionsprinzip für die Kommunikation von Maschine zu Maschine ist?
"Es hängt davon ab, ob". HATEOAS ist Teil der einheitlichen Schnittstellenbeschränkung von REST.
Durch die Anwendung des Software-Engineering-Prinzips der Allgemeinheit auf die Komponentenschnittstelle wird die Gesamtsystemarchitektur vereinfacht und die Sichtbarkeit von Interaktionen verbessert. Die Implementierungen sind von den von ihnen bereitgestellten Diensten entkoppelt, was eine unabhängige Weiterentwicklung fördert. Der Nachteil ist jedoch, dass eine einheitliche Schnittstelle die Effizienz beeinträchtigt, da die Informationen in standardisierter Form übertragen werden und nicht in einer für die Anforderungen einer Anwendung spezifischen Form. Die REST-Schnittstelle wurde so konzipiert, dass sie für die Übertragung von Hypermediendaten mit großen Datenmengen effizient ist und für den üblichen Web-Fall optimiert wird. Dies führt jedoch zu einer Schnittstelle, die für andere Formen der architektonischen Interaktion nicht optimal ist.
Denken wir also einen Moment darüber nach, was dies bedeutet. Wenn ich Probleme mit meinem WLAN-Router habe, kann ich mit demselben Browser kommunizieren, den ich zum Senden von Antworten an den Stapelaustausch verwende. Insbesondere spielt es keine Rolle, welchen Browser ich verwende oder ob mein Browser ein paar Updates hinter (oder vor) den Erwartungen des Routers liegt. Es spielt keine Rolle, dass die technische Organisation, die den Browser geschrieben hat, völlig unabhängig von der Organisation ist, die die Router-Schnittstelle erstellt hat.
Es funktioniert einfach .
Es ist natürlich nicht universell. Fielding schrieb 2008 :
Das bedeutet nicht, dass ich denke, dass jeder seine eigenen Systeme gemäß dem REST-Architekturstil entwerfen sollte. REST ist für langlebige netzwerkbasierte Anwendungen gedacht, die sich über mehrere Organisationen erstrecken. Wenn Sie keinen Bedarf für die Einschränkungen sehen, verwenden Sie sie nicht.
Die Einschränkungen, die den REST-Architekturstil ausmachen, wurden aufgrund der Eigenschaften ausgewählt, die sie hervorrufen. Wenn diese Eigenschaften für Ihren Anwendungsfall nicht von Nutzen sind, sollten Sie unbedingt in Betracht ziehen, die entsprechenden Einschränkungen aufzuheben.
Wenn Maschine zu Maschine schwierig wird, haben Sie die Fähigkeit des Menschen verloren, die von den Darstellungen bereitgestellte Semantik unscharf abzugleichen. Die Kunden können damit auskommen, nur die Medientypen zu kennen, aber wir haben normalerweise einen Menschen, der sich mit den semantischen Hinweisen befasst, um eine Bedeutung abzuleiten.
schema.org ist ein Teil der Bemühungen, ein maschinenlesbares Vokabular zu erstellen. Die Maschinenagenten verwenden den Client, um die semantischen Hinweise zu finden, und wenden sein eigenes Verständnis der Bedeutung an, um die richtigen Aktionen auszuwählen.
Aber es ist Arbeit; Sie müssen in die Entwicklung maschinenfreundlicher Darstellungen Ihrer Ressourcen investieren und sicherstellen, dass diese Darstellungen vorwärts- und rückwärtskompatibel bleiben, damit Clients unabhängig voneinander entwickelt werden können.
Wenn eine einzelne Organisation sowohl den Client als auch den Server steuert, sind die Vorteile dieser Unabhängigkeit viel geringer. In diesem Fall ist die Einschränkung möglicherweise nicht die richtige Wahl für die Architektur.