© Excellent backgrounds/Shutterstock.com
Java Magazin
Wer REST will, muss mit HATEOAS ernst machen

Fieldings Vermächtnis

HATEOAS ist laut Roy Thomas Fielding das zentrale REST Constraint - und das am häufigsten missachtete in Architekturen, die sich selbst „RESTful“ nennen. Hier wird eine Implementierung vorgestellt, die ernst macht mit HATEOAS und dazu einen weiteren HTTP-Standard nutzt: den Linkheader.

Stefan Ullrich


Bereits jetzt, zu Lebzeiten Roy T. Fieldings, ist sicher, dass seine Arbeit zu REST kommende Generationen beeinflussen wird. Mit dem Titel des Artikels ist also ein „Vermächtnis in spe“ gemeint. Fielding formulierte es im Jahr 2000 erstmals in seiner Doktorarbeit [1] und hat es seitdem oft wiederholt: „REST APIs must be hypertext-driven“ scheint er uns anschreien zu wollen in dem berühmten Blog-Post aus dem Jahr 2008 [2], in dem es weiter heißt: „I am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today’s example is the SocialSite REST API. That is RPC. It screams RPC. There is so much coupling on display that it should be given an X rating. What needs to be done to make the REST architectural style clear on the notion that hypertext is a constraint? In other words, if the engine of application state (and hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot be a REST API. Period. Is there some broken manual somewhere that needs to be fixed?“.

Aber wo steht da was von HATEOAS? Hier: „... if the engine of application state is not being driven by hypertext, then it cannot be RESTful“. Hypermedia As The Engine Of Application State – das steckt hinter dem hässlichen Akronym, das mit „Hate“, zu Deutsch: „Hass“, beginnt.

Was bedeutet HATEOAS?

Hypermedia As The Engine Of Application State ist also eine essenzielle Bedingung für jede REST-Architektur. Dann sollte es von zentraler Bedeutung sein, diesen Satz genau zu verstehen:

Hypermedia: Der Begriff Hypermedia setzt sich zusammen aus den Begriffen „Hypertext“ und „Multimedia“ [3]. Die griechische Präposition „hyper“ hat die Bedeutung „über ... hinaus“ [4] – Hypertext ist also ein Text, der über sich selbst hinaus weist, und zwar durch Verlinkung auf einen anderen Text. Hypermedia erweitert dieses Konzept durch die Verallgemeinerung von Text durch Multimedia.Engine: Die deutsche Übersetzung von Engine ist (unter anderem) Maschine bzw. Automat [5] – und genau das ist auch gemeint: ein Zustandsautomat.Application heißt Anwendung – sowohl im Sinne eines Softwareprogramms als auch der Anwendung der Prinzipien einer (hier: REST-)Architektur. Im Kontext eines RESTful-API kann man Application gleichsetzen mit Ressource.State: State heißt Zustand und verbindet Engine und Application: Ein Automat besteht aus Zuständen und Übergängen und beschreibt damit das Verhalten der Anwendung.

Ein Zustandsautomat wird in UML als Zustandsdiagramm modelliert: Kant...

Java Magazin
Wer REST will, muss mit HATEOAS ernst machen

Fieldings Vermächtnis

HATEOAS ist laut Roy Thomas Fielding das zentrale REST Constraint - und das am häufigsten missachtete in Architekturen, die sich selbst „RESTful“ nennen. Hier wird eine Implementierung vorgestellt, die ernst macht mit HATEOAS und dazu einen weiteren HTTP-Standard nutzt: den Linkheader.

Stefan Ullrich


Bereits jetzt, zu Lebzeiten Roy T. Fieldings, ist sicher, dass seine Arbeit zu REST kommende Generationen beeinflussen wird. Mit dem Titel des Artikels ist also ein „Vermächtnis in spe“ gemeint. Fielding formulierte es im Jahr 2000 erstmals in seiner Doktorarbeit [1] und hat es seitdem oft wiederholt: „REST APIs must be hypertext-driven“ scheint er uns anschreien zu wollen in dem berühmten Blog-Post aus dem Jahr 2008 [2], in dem es weiter heißt: „I am getting frustrated by the number of people calling any HTTP-based interface a REST API. Today’s example is the SocialSite REST API. That is RPC. It screams RPC. There is so much coupling on display that it should be given an X rating. What needs to be done to make the REST architectural style clear on the notion that hypertext is a constraint? In other words, if the engine of application state (and hence the API) is not being driven by hypertext, then it cannot be RESTful and cannot be a REST API. Period. Is there some broken manual somewhere that needs to be fixed?“.

Aber wo steht da was von HATEOAS? Hier: „... if the engine of application state is not being driven by hypertext, then it cannot be RESTful“. Hypermedia As The Engine Of Application State – das steckt hinter dem hässlichen Akronym, das mit „Hate“, zu Deutsch: „Hass“, beginnt.

Was bedeutet HATEOAS?

Hypermedia As The Engine Of Application State ist also eine essenzielle Bedingung für jede REST-Architektur. Dann sollte es von zentraler Bedeutung sein, diesen Satz genau zu verstehen:

Hypermedia: Der Begriff Hypermedia setzt sich zusammen aus den Begriffen „Hypertext“ und „Multimedia“ [3]. Die griechische Präposition „hyper“ hat die Bedeutung „über ... hinaus“ [4] – Hypertext ist also ein Text, der über sich selbst hinaus weist, und zwar durch Verlinkung auf einen anderen Text. Hypermedia erweitert dieses Konzept durch die Verallgemeinerung von Text durch Multimedia.Engine: Die deutsche Übersetzung von Engine ist (unter anderem) Maschine bzw. Automat [5] – und genau das ist auch gemeint: ein Zustandsautomat.Application heißt Anwendung – sowohl im Sinne eines Softwareprogramms als auch der Anwendung der Prinzipien einer (hier: REST-)Architektur. Im Kontext eines RESTful-API kann man Application gleichsetzen mit Ressource.State: State heißt Zustand und verbindet Engine und Application: Ein Automat besteht aus Zuständen und Übergängen und beschreibt damit das Verhalten der Anwendung.

Ein Zustandsautomat wird in UML als Zustandsdiagramm modelliert: Kant...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang