Cloud Computing Grundlagen
bezeichnet (Hypermedia As The Engine Of Application State). Um Verwirrungen vorzubeugen, sehen wir uns im Folgenden die Eigenschaften etwas genauer an.
Adressierbarkeit
Jede verteilte Anwendung benötigt eine eindeutige Adresse, damit sie von Service-Consumern auffindbar ist. Das ist oft nicht trivial, da vor allem die Ressourcen eines Ressource Identifiers (Webadressen) zur Adressierung verwendet werden. Der Aufbau sieht in etwa so aus:
schema://host:port/pfad/abfrage?parameter#fragment
Das Verb „schema“, da REST üblicherweise über HTTP oder HTTPS läuft, „Host“ bezeichnet die Domäne oder die IP-Adresse des Serviceanbieters, wobei ein optionaler Port hinzugefügt werden kann, sollte es sich nicht um den Standard-Port für HTTP handeln. Danach kann man einen Pfad angeben, der mehrere Pfadsegmente beinhalten kann, die jeweils durch ein „/“ getrennt werden müssen. Eine optionale Abfrage kann Parameter übergeben, welche die Ausführung des Services beeinflussen. Wichtig ist jedoch, dass dies keine Aktionen wie „delete“ oder „update“ sind. Diese werden in REST anders behandelt – mehr dazu später. Ein Fragment kann schlussendlich einen Bereich direkt ansprechen. Wichtig ist auch noch anzumerken, dass, wie für HTTP üblich, nicht alle Zeichen verwendet werden können. Will man ein Leerzeichen übergeben, ist es notwendig, dass man hierfür ein „+“ in die Adresse eingibt. Weitere Einschränkungen sind Sonderzeichen, die durch einen „%“ und einen Hexcode angegeben werden.
http://codeforce.at/customers
Diese Adresse soll alle Kunden zurückliefern.
http://codeforce.at/customers/123
Diese Adresse soll exakt den Kunden mit der Kundennummer 123 zurückliefern.
http://codeforce.at/customers?zipcode=1120
Diese Adresse soll alle Kunden mit der Postleitzahl 1120 zurückliefern.
Eindeutige und klar definierte Operationen
REST verwendet einige Operationen, die aus den HTTP-Verben bestehen. Mit diesen Operationen sollen alle Anwendungsfälle einer Applikation abgedeckt werden: GET, PUT, POST, DELETE, HEAD und OPTIONS. Viele Leser werden jetzt vermutlich verwundert sein: Diese sechs Schlüsselwörter sollen ganze Services beschreiben können? Doch mit diesen Operationen kann man hochskalierbare und komplexe Services erstellen. Jede Operation ist für unterschiedliche Fälle zuständig. Dazu sehen wir uns die Operationen nun im Detail an.
GET
Get ist ein sehr einfaches HTTP-Verb. Hierbei wird eine Anfrage an ein Service gestartet. Üblicherweise werden mit einem GET ein oder mehrere Parameter übergeben. Diese Parameter sind an den URL mit einem „?“ angehängt. Mehrere Parameter werden mit dem Zeichen „&“ verknüpft. Der Server sendet hierfür eine Response zurück, die in den verschiedensten Formaten, zum Beispiel XML oder JSON, sein kann. Ferner werden Header-Informationen mitgesendet wie der Statuscode (der im Normalfall 200 – OK ist) oder die Sprache.
PUT
Ein PUT erstellt eine Ressource am Server. Hierfür wird die gewünschte Adresse dieser Ressource angegeben, im Body ist deren Inhalt angegeben. Das können beispielsweise eine Datei oder ein Objekt (Artikel) sein.
POST
Mit POST ist es möglich, Ressourcen zu manipulieren, z. B. eine Bilddatei zu verändern. Der Inhalt der neuen oder veränderten Ressource ist hierbei nicht in dem URL, sondern im Body der Anfrage enthalten.
DELETE
Mit einem DELETE werden einzelne Ressourcen vom Server gelöscht. Hierbei wird der Befehl mit der Adresse der zu löschenden Ressource angegeben.
HEAD
Verhält sich ähnlich wie ein GET, jedoch sendet der Server nur Header-Informationen an den Client zurück. Das ist dann sinnvoll, wenn überprüft werden soll, ob eine Ressource vorhanden ist.
OPTIONS
Mit OPTIONS werden Optionen für eine Ressource abgefragt, meist Informationen über mögliche Kommunikationen mit einem Objekt.
Repräsentationsorientiertheit
REST hat die Eigenschaft, die Repräsentation der Ressource flexibel zu gestalten. Das bedeutet, dass das Format, das man in Operationen erhält, bzw. sendet, flexibel sein kann. Meist wird XML verwendet, es ist aber auch möglich, ein beliebiges anderes Format zu verwenden. Es obliegt dem Serviceersteller, um welches Format es sich hierbei handelt. Mögliche andere Formate wären JSON, CSV, YAML.
Zustandslose Kommunikation
Ein zentrales Element von REST ist die Zustandlosigkeit bei einer Kommunikation. Das bedeutet, dass sich der Webserver nicht mehr um den Zustand einer
Weitere Kostenlose Bücher