Inhaltsverzeichnis
Representational State Transfer
Definition
Akronym: REST
- Architekturstil zur Realisierung von Web Services
- Basiert auf Prinzipien die im WWW eingesetzt werden
- Ein Onlineshop soll als Beispiel für eine RESTful Anwendung dienen. In der Anwendung gibt es Kunden, die Artikel in Warenkörbe aufnehmen können
- Jedes einzelne Objekt der Anwendung wie Artikel oder Kunde stellt eine Resource dar, die extern über eine URL erreichbar ist. Mit dem folgenden Aufruf ist in der Beispielanwendung der Warenkorb mit der Nummer 5873 erreichbar:
GET /warenkorb/5873 - Wie das Ergebnis einer Anfrage repräsentiert wird, ist bei REST nicht spezifiziert. Zwischen Client und Server muss ein gemeinsames Verständnis über die Bedeutung der Repräsentation vorhanden sein
- Nachrichten sind in REST selbst beschreibend. In einer Nachricht muss alles enthalten sein, um die Nachricht zu interpretieren. Für die Interpretation einer Nachricht ist kein Wissen über vorherige oder spätere Nachrichten notwendig. Der Status einer Anwendung wird durch den Inhalt einer oder mehrerer Hypertext Dokumente repräsentiert
REST vs. SOAP
Ggf. in eigene Seite auslagern, die von rest und SOAP aus verlinkt wird.
- Anfragen i. d. R. nur URL (mit Operation), kein XML
- Antwort im Gegensatz zu SOAP in beliebigem Format (z. B. XML, JSON, CSV)
- Antwort direkt (bei SOAP dagegen enveloped in spezielle XML-Tags)
- SOAP ist typsicher (Typen in den XML-Anfragen spezifiziert), REST nicht (Validierung!)
- REST dafür agil, schneller umzusetzen
- REST bietet bessere Möglichkeiten für das caching; Antworten oft leichter parsbar
- SOAP derzeit (Herbst 2008) noch weiter verbreitet - von vielen Sprachen und Anwendungen unterstützt; REST kein Standard, sondern eher eine Philosophie
REST-Ressourcen
- Webseiten, Bilder und CGI-Skripte bzw. Servlets stellen Ressourcen dar, die über URLs adressiert und angesprochen werden können.
- Eine Webanwendung stellt eine Ansammlung von Ressourcen dar.
- Mit HTTP können Nachrichten an die Ressourcen gesendet werden, beispielsweise durch den Aufruf einer Seite im Browser.
- Eine direkte Manipulation einer Ressource ist nicht vorgesehen.
- Jeder Zugriff erfolgt indirekt über die der Ressource zugeordnete URI.
REST-Operatoren
- Die Art des Aufrufs der URL ist Bestandteil der Definition der Anfrage.
- Mit GET fordert der Client Daten vom Server an.
- Mit POST werden vorhandene Daten aktualisiert oder untergeordnete Ressourcen ergänzt.
- Mit PUT werden neue Daten/Ressourcen auf dem Server abgelegt.
- Mit DELETE löscht der Client Daten auf dem Server.
- Mit HEAD fordert der Client Metadaten zu einer Ressource vom Server an.
- Mit OPTIONS prüft der Client, welche Methoden auf einer Ressource zur Verfügung stehen
- lesende Anfragen meist via GET, dürfen nichts ändern
- schreibende Anfragen via POST (und andere Operatoren), immer serverseitig zu validieren, da der Transfer stateless erfolgt!
Beispiele
- REST-basierte Dienste: Yahoo!, Flickr, z. T. Amazon, Atom (vs. RSS)
- Yahoo-Beispiel: http://developer.yahoo.com/search/rest.html
- REST-Dienste aufrufen in verschiedenen Programmiersprachen: