Representational State Transfer

Representational State Transfer (REST) sind Architekturrichtlinien für Webservices, mit denen Objekte verwaltet werden können. Unter "Objekte verwalten" ist dabei das Erzeugen, das Lesen, das Verändern und das Löschen von Objekten gemeint.

Folgende Richtlinien müssen eingehalten werden, damit man einen Webservice als REST-konform bezeichnen kann:

- Jedem Objekt ist (mindestens) eine URL zugeordnet.

- Über diese URL kann mittels eines GET Requests die Repäsentation des Objekts (z.B. in XML oder JSON) ermittelt werden. Der GET Request hat keine Seiteneffekte.

- Neue Objekte können mit einem POST Request angelegt werden, wenn ihr Schlüssel vom Service Provider vergeben wird. Im Location Header der Response wird die URL des neu angelegten Objekts übermittelt. Objekte, für die der Service Consumer die Schlüssel vergibt, werden mit einem PUT Request angelegt.

- Ein Objekt kann mit einem PUT Request verändert werden, dabei wird der komplette Zustand des Objekts ersetzt. Soll nur ein Teil der Felder aktualisiert werden, wird ein POST Request benutzt.

- PUT Requests sollen idempotent verarbeitet werden. Die Verarbeitung von POST Requests ist in der Regel nicht idempotent.

- Ein Objekt kann mit einem DELETE Request gelöscht werden.

- Abgesehen vom Zustand der mit dem Webservice verwalteten Objekte sind die Webservice-Aufrufe zustandslos.


Quellen

http://bitworking.org/news/How_to_create_a_REST_Protocol
http://rest.blueoxen.net/cgi-bin/wiki.pl?RestInPlainEnglish
http://rest.blueoxen.net/cgi-bin/wiki.pl?HttpMethods
http://www.infoq.com/articles/designing-restful-http-apps-roth