HATEOAS mit Spring Boot

Was ist Hypermedia?

Hypermedia ist die Vernetzung von Medien mit Hyperlinks, also Links zu anderen Resourcen.

REST Level

Es gibt im Grunde 4 Rest-Level, welche immer spezifischer werden, je detaillierter man sie betrachtet.

Level 0

Reiner Text oder XML, welcher per Post hin und her gesendet wird.

Level 1

Jede Resource hat ihre eigene URL.

Level 2

HTTP Aktionen, also POST, GET, PUT, DELETE,…
Unterstützt eine Schnittstelle diese, ist sie bereits Level 2

Level 3

Das höchste und detailierteste Level ist HATEOAS, also Level 3.

Am Beispiel

Das Konzept besteht darauf, dass eine Antwort immer die nächsten möglichen Schritte enthält, und die Links dazu bereitstellt. Im Grunde wie ein Zustandsautomat, welcher auf der Resource abgebildet ist.

Mit Spring Boot

Wollen wir eine wie oben beschriebene Schnittstelle umsetzen, können wir dies Beispielsweise mit Spring HATEOAS bewerkstelligen.

Zusammenfassung

Es gibt leider keinen klaren Standard für HATEOAS, daher muss man noch relativ viel selbst implementieren. Schön ist hier die Bibliothek von Spring, welche im September 2019 ihr 1.0 Release hatte. Hier funktioniert auch das Lesen der Links gut und es fühlt sich schon an, als ob man damit stabil arbeiten kann.

Vorteile

Ein großer Vorteil ist, dass sich Links beliebig ändern können und der Client nicht angepasst werden muss, da er nur auf die Referenz zugreift. So bleibt der Link komplett in der Hand des Backends.

Nachteile

Für mich gibt es eigentlich nur zwei.

  1. Eine Schnittstelle kann leichter durch Ausprobieren erforscht werden
  2. Es wird viel Boilerplate mitgesendet

Fazit

Ich finde HATEOAS sehr spannend und hoffe, dass sich das Thema durchsetzen wird, da es meiner Meinung nach für eine klarere und einfacher benutzbare Schnittstelle sorgt. Das Folgen von Links scheint intuitiv und ist das, was wir tagtäglich im Web tun. Also warum sollten das nicht auch unserer Anwendungen tun? Hier verhindert man in Zukunft vielleicht das ein oder andere mal das Typische /v1/, /v2/, /v3/… Api Design.

--

--

☕️ →👨‍💻 // Developer @ McKinsey

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store