Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 3 Nächste Version anzeigen »

Hypermedia as the Engine of Application State (HATEOAS) zu Deutsch: Hypermedia als Motor des Anwendungs-Zustands, beschreibt einen Quasi-Standard für REST-Architekturen.
Dabei stellt der Server dem Client, von den angenommen wird, dass er keine weiteren Vorkenntnisse über den Service hat, verwandte Services als Links zur Verfügung.
Der Client kann damit theoretisch on Demand weitere Informationen aus den bereits erhaltenen Daten gewinnen.

In der RESTful API erfolgt die Integration auf 2 Ebenen.

Konfiguration auf Code-Ebene

Damit ein neuer RESTful-Service als Typ zur Auswahl bei der REST-Page auftaucht, muss er das Interface \Brandbox\JoinRestful\Join\Restful\Lib\Service\RestfulServiceInterface implementieren.
Um nun zusätzlich die relevanten Links für HATEOAS bereitzustellen, muss zusätzlich das Interface \Brandbox\JoinRestful\Service\Hateoas\Lib\Service\RestfulServiceHateoasInterface implementiert werden.

Dieses Interface stellt die Methode getLink bereit, die vom HATEOAS-Service automatisch aufgerufen wird, um den dem Typ entsprechenden Link zu erhalten.

Interface \Brandbox\JoinRestful\Service\Hateoas\Lib\Service\RestfulServiceHateoasInterface

MethodeSignaturParameter
getLink
public function getLink(Restful\Lib\Entity\RestPage $restPage, ?int $id = null): string;
RestPage, id des zu Grunde liegenden Datensatzes

Konfiguration auf Anwendungsebene

Damit Links vom HATEOAS-Service gebildet werden können, müssen RestPages über Eltern-Kind-Beziehungen miteinander verknüpft werden.

Beispiel:

  • Es existieren 3 REST-Pages, eine vom Typ Liste, eine vom Typ Karte und eine vom Typ Kinder.
  • Anforderung: die Ergebnisse aus der Liste sollen pro Datensatz einen Link zur Karte des Datensatzes und den Kindern des Datensatzes enthalten.
  • Konfiguration: die REST-Pages vom Typ Karte und Kinder werden als Kind-Datensatz an die REST-Page vom Typ Liste verknüpft.
  • Keine Stichwörter