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
Methode | Signatur | Parameter |
---|---|---|
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.