Ich verstehe den Vorteil von HATEOAS für APIs nicht, die von Programmen verwendet werden sollen (im Gegensatz zu Menschen, die Ihre API direkt durchsuchen). Sicher, der Kunde ist nicht an ein URL-Schema gebunden, aber er ist an ein Datenschema gebunden, das in meinen Augen dasselbe ist.
Angenommen, ich möchte einen Artikel in einer Bestellung anzeigen, ich habe die Bestell-URL bereits gefunden oder kenne sie bereits.
HATEOAS:
order = get(orderURL);
item = get(order.itemURL[5]);
Nicht-HATEOAS:
order = get(orderURL);
item = get(getItemURL(order,5));
Im ersten Modell muss ich wissen, dass das Auftragsobjekt ein itemURL-Feld hat. Im zweiten Modell muss ich wissen, wie man eine Artikel-URL erstellt. In beiden Fällen muss ich vorher etwas "wissen", also was macht HATEOAS eigentlich für mich?
web-development
rest
Tempo
quelle
quelle
get(orderURL);
sollte es dir sagenthe fact that the order object has an itemURL field
.Antworten:
Ein Unterschied ist, dass das Schema hoffentlich ein Standard ist oder zumindest von anderen wiederverwendet werden kann.
Angenommen, Sie verwenden die Twitter-API und möchten auch StatusNet (oder stattdessen) unterstützen. Da sie dasselbe Datenmodell wie Twitter verwenden, müssen Sie nur die Haupt-URL ändern, wenn die API HATEOAS folgt. Ist dies nicht der Fall, müssen Sie jetzt jede einzelne URL im Code ändern .
Wenn Sie den Code ändern müssen, um die Einstiegspunkt-URL des Dienstes zu speichern, ist dies möglicherweise nicht hilfreich. Es scheint wirklich, wenn diese URL dynamisch eingefügt wird; Wenn Sie beispielsweise einen Service wie Twillio erstellen, der mit der eigenen API des Benutzers interagiert.
quelle
Explorable API: Es mag trivial klingen, aber unterschätzen Sie nicht die Leistungsfähigkeit einer explorablen API. Die Möglichkeit, die Daten zu durchsuchen, erleichtert es den Client-Entwicklern erheblich, ein mentales Modell der API und ihrer Datenstrukturen zu erstellen.
Inline-Dokumentation: Die Verwendung von URLs als Verknüpfungsbeziehungen kann Client-Entwickler auf die Dokumentation verweisen.
Einfache Client-Logik: Ein Client, der URLs folgt, anstatt sie selbst zu erstellen, sollte einfacher zu implementieren und zu warten sein.
Der Server übernimmt das Eigentum an URL-Strukturen: Durch die Verwendung von Hypermedia wird dem Client das Wissen über die vom Server verwendeten URL-Strukturen entzogen.
Ausladen von Inhalten zu anderen Diensten: Hypermedia ist erforderlich, wenn Inhalte auf andere Server (z. B. ein CDN) heruntergeladen werden sollen.
Versionierung mit Links: Hypermedia hilft bei der Versionierung von APIs.
Mehrere Implementierungen desselben Dienstes: Hypermedia ist eine Notwendigkeit, wenn mehrere Implementierungen desselben Dienstes vorhanden sind (und ein Client auf mehrere von ihnen zugreifen muss).
Eine ausführliche Erläuterung dieser Stichpunkte finden Sie hier: http://soabits.blogspot.no/2013/12/selling-benefits-of-hypermedia.html
quelle