28.11.2005 Architektur von REST basierten Webservices Referent MARK ALTHOFF REST was invented by ROY T. FIELDING and RICHARD N. TAYLOR
Geschichtlicher Hintergrund von REST 1994-1995 taucht der Begriff «REST» erstmals in Roy T. Fieldings Dissertation auf Fielding führt den Erfolg des Webs auf einige Eigenschaften der verwendeten Mechanismen und Protokolle zurück. IET entwickelte ein Modell, einen Architekturstil, der die Charakteristika vereinen sollte, die das Web bisher so erfolgreich gemacht hatten. dieses idealisierte Modell wurde REST genannt und wurde der Grundstock für die moderne Webarchitektur und Vorlage für das Redesign von HTTP und URI. Das Web ist demnach eine Ausprägung des REST Architekturstil 1/11
Was bedeutet REST? Akronym für Representational State Transfer Es geht um Begriffe wie: Representation (Representational) Zustand(State) Übergang(Transfer) 2/11
Resources Alles von Interesse kann eine Resource sein: ein Text Dokument, ein Bild, eine Video oder Audio Datei Kollektion von mehreren anderen Resources eine Person etc früher: direkte Verlinkung eines Dokumentes eine Resource im Sinne von «REST» ist ein Verweis auf ein Konzept Grund: Konsistenz des Zugriffs auf die Resource zu erhalten statische und varianzenreiche Resources 3/11
Adressierung von Resources REST benutzt zur Adressierung von Resources URI (Uniform Resource Identifier) einheitlicher Bezeichner für physikalische oder abstrakte Resources Aufbau: http://www.werkzeuge.de/hammer Protokoll Server Pfad URL URI URN Ziel: Identifier finden, der möglichst nah an der Semantik der Resource ist. ermöglicht Verlinkung vor der eigentlichen Existenz der Resource 4/11
Representational State Transfer Zugriff, Modifikation und Transfer läuft über Representation der Resource Server hat internes Mapping, von einem Identifier auf einen Satz von Representationen Server kann auf Anfrage beliebige Formate zurückgeben: Text, HTML, JPEG, GIF oder eben XML Loose Coupling (Implementierung transparent) Content Negotiation (Content-Type Aushandlung zwischen Server und Client) 5/11
Beispiel Response für www.werkzeuge.de/hammer : <?xml version= 1.0?> <p:hammer xmlns:p= http://www.werkzeuge.de xmlns:xlink= http://www.w3.org/1999/xlink >... <hammer id= 00101 xlink:href= http://www.werkzeuge.de/hammer/00101 /> <hammer id= 00102 xlink:href= http://www.werkzeuge.de/hammer/00102 /> <hammer id= 00103 xlink:href= http://www.werkzeuge.de/hammer/00103 /> <hammer id= 00104 xlink:href= http://www.werkzeuge.de/hammer/00104 />... </p:hammer> machine-to-machine processing Resources sind keine Inseln (Verlinkung für weitere Details) 6/11
Representational State Transfer jede Representation versetzt den Client in einen «State» (Zustand) benutzen eines Hyperlinks gibt eine weitere Representation einer anderen Resource zurück Client wird erneut in einen «State» versetzt Zitat Fielding zu dem Thema: REST is intended to evoke an image of how a well-designed web application behaves: a network of web pages (a virtual state machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transfered to the user and rendered for their use. 7/11
Die Rolle des Hyper-Text-Transfer-Protokoll bei REST beinhaltet ähnlich einer Datenbank Abfragesprache wie SQL einen Satz von Befehlen: GET (SELECT) POST (UPDATE) PUT (INSERT) DELETE (DELETE) und andere Caching Funktion HTTP Authentifizierung REST ist HTTP Manipulation addressierbarer Resources 8/11
Anforderungen an eine HTTP Message bei REST alle REST Interaktionen sind stateless! jeder Request muss alle notwendigen Informationen beinhalten Folge: Zustände müssen nicht gespeichert werden parallel laufende Interaktionen möglich Nachrichten können isoliert verstanden werden Fehlerzustände leichter behebbar 9/11
Ein Webservices auf REST Basis Bestellservice von Werkzeugen unter: werkzeuge.de/bestellung Anbieter spezifiziert eine Bestellung in einem WSDL Dokument Client gibt Bestellung in einem Formular ein Bestellung wird konform des WSDL Dok. per HTTP POST an werkzeuge.de/bestellung geschickt Server antwortet mit URI für die neue Bestellung als Resource Bestellung wird zu einer gemeinsamen Resource zw. Server und Client 10/11
Charakteristiken eines REST Webservices Client Server: pull-based Interaction: Konsumenten ziehen vom Server Informationen Stateless: jede Anfrage muss alle Informationen beinhalten Cache: Netzwerkkommunikation gering zu halten Uniform Interface: einheitlicher Zugriff auf Resources per: HTTP POST, PUT, GET... Namentliche Resourcen: System aus Resource-Konzepten, die per URI addressiert sind. Verlinkung von Resources: ermöglicht dem Client das Springen von einem «State» zum nächsten In Schichten aufgebaute Komponenten: Cache oder Proxy für Performance und Sicherheit 11/11
Danke für die Aufmerksamkeit