Show Menu
Cheatography

HTTP - REST Cheat Sheet Cheat Sheet (DRAFT) by

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 Interp­ret­ation

==Zitat Beginn==
„REST APIs must be hypert­ext­-dr­iven“ - Roy T. Fieldings

Hypermedia As The Engine Of Applic­ation State ist also eine essenz­ielle Bedingung für jede REST-A­rch­ite­ktur. Dann sollte es von zentraler Bedeutung sein, diesen Satz genau zu verstehen:

1. Hyperm­edia: Der Begriff Hypermedia setzt sich zusammen aus den Begriffen „Hyper­text“ und „Multi­media“. Die griech­ische Präpos­ition „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 Verall­gem­ein­erung von Text durch Multim­edia.
2. Engine: Die deutsche Überse­tzung von Engine ist (unter anderem) Maschine bzw. Automat – und genau das ist auch gemeint: ein Zustan­dsa­utomat.
3. Applic­ation heißt Anwendung – sowohl im Sinne eines Softwa­rep­rog­ramms als auch der Anwendung der Prinzipien einer (hier: REST-)­Arc­hit­ektur. Im Kontext eines RESTfu­l-API kann man Applic­ation gleich­setzen mit Ressource.
4. State: State heißt Zustand und verbindet Engine und Applic­ation: Ein Automat besteht aus Zuständen und Übergängen und beschreibt damit das Verhalten der Anwendung.
== Zitat Ende ==

Interp­ret­ation
Der Browser sendet einen Request an eine Resource die er per URL identi­fiz­iert. Die Resource reagiert auf diesen Request jenachdem ob es sich um GET, PUT, POST, DELETE etc. handelt, evtl. versch­ieden. Letztlich wird die Resource ihre Repräs­ent­ation zurück­senden - was auch immer die Resource dafür hält. Außerdem wird die Resource diverse URLs mit Relati­ons­att­ributen zurück­senden. 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äs­ent­ieren in dem Fall Zustände eines Automaten und die URLs stellen die Zustan­dsü­ber­gänge dar. Daher ist es für den Server nie notwendig den Client­zustand zu halten, da er ja durch die gerade aufger­ufene Resource repräs­entiert wird.
Gleiche Request an eine Resource müssen nicht notwendig zur gleichen Repräs­ent­ation führen! Die Resource darf selbst entsch­eiden was sie als Repräs­ent­ation 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 vorges­cha­lteten Login sicher realis­ieren lässt aber ich gehe davon aus das es machbar ist. Vielleicht lassen sich dazu ja die spontanen Wechsel der Repräs­ent­ation einer Resource nutzen.

Request Arten

GET
Aktuelle Repräs­ent­ation der Resource abfragen
PUT
Erzeugen und Aktual­isi­eren. Zweimal PUT eines Objektes darf keine 2 Objekte erstellen sondern nur eins. 2x PUT beim Ändern darf versch­iedene Teile vom Objekt ändern.(h­ttp­://­sta­cko­ver­flo­w.c­om/­que­sti­ons­/63­045­3/p­ut-­vs-­pos­t-i­n-rest)
POST
Erzeugen und Aktual­isi­eren. Wenn der Server entsch­eidet ob ein Objekt angelegt oder geändert wird dann POST. (http:­//s­tac­kov­erf­low.co­m/q­ues­tio­ns/­630­453­/pu­t-v­s-p­ost­-in­-rest)
DELETE
Loeschen oder Entfernen einer Resource