Cheatography
https://cheatography.com
Merkhilfen für REST im HTTP Umfeld
This is a draft cheat sheet. It is a work in progress and is not finished yet.
HATEOAS Definition und Interpretation
==Zitat Beginn==
„REST APIs must be hypertext-driven“ - Roy T. Fieldings
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:
1. Hypermedia: Der Begriff Hypermedia setzt sich zusammen aus den Begriffen „Hypertext“ und „Multimedia“. Die griechische Präposition „hyper“ hat die Bedeutung „über … hinaus“ – 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.
2. Engine: Die deutsche Übersetzung von Engine ist (unter anderem) Maschine bzw. Automat – und genau das ist auch gemeint: ein Zustandsautomat.
3. 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.
4. 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.
== Zitat Ende ==
Interpretation
Der Browser sendet einen Request an eine Resource die er per URL identifiziert. Die Resource reagiert auf diesen Request jenachdem ob es sich um GET, PUT, POST, DELETE etc. handelt, evtl. verschieden. Letztlich wird die Resource ihre Repräsentation zurücksenden - was auch immer die Resource dafür hält. Außerdem wird die Resource diverse URLs mit Relationsattributen zurücksenden. Diesen URLs kann der Nutzer per Browser folgen. Dabei sollten ein URL auf die Resource selbst und ein URL der zur nächsten Resource führt enthalten sein. Die Resourcen repräsentieren in dem Fall Zustände eines Automaten und die URLs stellen die Zustandsübergänge dar. Daher ist es für den Server nie notwendig den Clientzustand zu halten, da er ja durch die gerade aufgerufene Resource repräsentiert wird.
Gleiche Request an eine Resource müssen nicht notwendig zur gleichen Repräsentation führen! Die Resource darf selbst entscheiden was sie als Repräsentation für richtig hält und kann diese durchaus auch spontan wechseln.
Anmerkung
Mir ist absolut nicht klar wie sich das Vorgehen für einen vorgeschalteten Login sicher realisieren lässt aber ich gehe davon aus das es machbar ist. Vielleicht lassen sich dazu ja die spontanen Wechsel der Repräsentation einer Resource nutzen. |
Request Arten
GET |
Aktuelle Repräsentation der Resource abfragen |
PUT |
Erzeugen und Aktualisieren. Zweimal PUT eines Objektes darf keine 2 Objekte erstellen sondern nur eins. 2x PUT beim Ändern darf verschiedene Teile vom Objekt ändern.(http://stackoverflow.com/questions/630453/put-vs-post-in-rest) |
POST |
Erzeugen und Aktualisieren. Wenn der Server entscheidet ob ein Objekt angelegt oder geändert wird dann POST. (http://stackoverflow.com/questions/630453/put-vs-post-in-rest) |
DELETE |
Loeschen oder Entfernen einer Resource |
|