REST API - Was ist HATEOAS?

In diesem Artikel werden Sie die REST-API weiter untersuchen und mehr über HATEOAS erfahren.

Beim Anzeigen einer Webseite können Sie die Daten auf der Seite anzeigen und Aktionen mit ihnen ausführen.

Wie wäre es mit einer REST-API? Wenn Sie eine REST-Ressource anfordern, erhalten Sie normalerweise die Ressourceninformationen zurück. Wie wäre es mit dem Senden von Vorgängen, die Sie mit der Ressource in der Antwort ausführen können?



Sie werden lernen:


  • Was ist HATEOAS?
  • Warum müssen Sie HATEOAS verwenden?
  • Wann benutzt man HATEOAS?

REST-API


Dies ist der fünfte Artikel in einer Reihe von Artikeln über die REST-API:


Was bedeutet HATEOAS?


Der Begriff HATEOAS steht für den Ausdruck „Hypermedia A s The Engine Of A Application State“ (Hypermedia als Engine of Application State). Um dies besser zu verstehen, müssen wir zuerst die Bedeutung von Hypermedien verstehen. Schauen Sie sich die folgende Webseite an:



Wenn der Browser eine Seite lädt, können Sie auf jeden Fall den gesamten Inhalt dieser Seite sehen. Interessanterweise können Sie auf der Seite auch viele Aktionen mit diesen Daten ausführen, zum Beispiel:

  • Drücken der Tasten (grünes "Clone" oder "Download" (Download)
  • Klicken auf Registerkarten (zum Beispiel, um "Probleme" anzuzeigen)
  • und noch ein paar mehr

Nun wollen wir sehen, wie sich unsere REST-APIs verhalten:

Wenn Sie sich eine typische GET-Anforderung an einen RESTful-Server wie diese ansehen:



Die GET-Anfrage localhost : 8080 / users erhält in diesem Fall einen Datensatz von drei Benutzern. Wenn Sie eine Anfrage mit GET localhost : 8080 / users / 1 senden, erhalten Sie nur Informationen über den ersten Benutzer. Wenn wir eine REST-Anforderung ausführen, erhalten wir in der Regel nur Daten und keine Aktionen mit ihnen. Hier füllt HATEOAS die Lücke. Mit einer HATEOAS-Anfrage können Sie nicht nur Daten senden, sondern auch verwandte Aktionen angeben:



Dieses Beispiel war im JSON-Format. Das XML-Format für ein anderes Beispiel würde ungefähr so ​​aussehen:



Wenn Sie diese Anfrage senden, um Kontoinformationen abzurufen, erhalten Sie beide:

  • Kontonummer und Saldodaten
  • Links, die Aktionen zum Einzahlen / Abheben / Übertragen / Schließen bereitstellen

Bei HATEOAS gibt mir eine Anforderung für eine REST-Ressource sowohl Daten als auch datenbezogene Aktionen.

Warum brauchen wir HATEOAS?


Der wichtigste Grund für HATEOAS ist die lose Kopplung. Wenn der Konsument eines REST-Service alle Ressourcen-URLs fest codieren muss, hängt dies eng mit der Implementierung Ihres Service zusammen. Wenn Sie stattdessen die URLs zurückgeben, die für Aktionen verwendet werden können, wird diese lose gekoppelt. Es besteht keine strikte Abhängigkeit von der Struktur der URI, wie sie in der Antwort angegeben und verwendet wird. Einige wichtige Themen im Zusammenhang mit HATEOAS:

HAL - Hypertext Application Language


Bei der Entwicklung eines RESTful-Service müssen Sie angeben, wie die Daten und Links zurückgegeben werden sollen, die der Anforderung entsprechen. HAL ist ein Format, mit dem Sie auf einfache und konsistente Weise Hyperlinks zwischen Ressourcen in Ihrer REST-API erstellen können. Hier ist ein Beispiel:



Mit HAL haben Sie verschiedene Kategorien von Ansichten:

  • Links : als Kombination angegeben
  • Ziel - als URI angegeben
  • Beziehung - Name
  • Eingebettete Ressourcen : Andere in dieser REST-Ressource enthaltene Ressourcen
  • Status: aktuelle Ressourcendaten

Wenn Sie mit dem Spring Framework einen REST-Service entwickeln, ist Spring HATEOAS ein guter Mechanismus für Ihren Service.

Zu diesem Thema gibt es ein Autorenvideo.

Zusammenfassung


In diesem Artikel haben wir uns angesehen, was HATEOAS bedeutet.

Mit HATEOAS geben Antworten auf REST-Anforderungen nicht nur Daten zurück, sondern auch Aktionen, die für die Ressource ausgeführt werden können.

Dies trägt dazu bei, dass Anwendungen lose gekoppelt werden.

Zusätzliche Lektüre


REST + MongoDB + HATEOAS?

HATEOAS REST Services Mit Frühling

Spring HATEOAS: Hypermedia-APIs mit Spring (vom Übersetzer hinzugefügt)

Source: https://habr.com/ru/post/de483328/


All Articles