Universität Bielefeld 28.11.2005 Architektur von REST–basierten Webservices Referent MARK ALTHOFF REST was invented by ROY T. FIELDING and RICHARD N. TAYLOR Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld Was bedeutet REST? • Akronym für Representational State Transfer • Es geht um Begriffe wie: Representation (Representational) Zustand(State) Übergang(Transfer) 2 / 11 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Universität Bielefeld Zusammenfassung Adressierung von Resources • REST benutzt zur Adressierung von Resources URI (Uniform Resource Identifier) URI • einheitlicher Bezeichner für physikalische oder abstrakte Resources • Aufbau: URL URN http://www.werkzeuge.de/hammer Protokoll Server Pfad • Ziel: Identifier finden, der möglichst nah an der Semantik der Resource ist. • ermöglicht Verlinkung vor der eigentlichen Existenz der Resource 4 / 11 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Universität Bielefeld Zusammenfassung 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Hintergrund Resource Zugriff Representation State / Transfer HTTP Webservice Zusammenfassung Universität Bielefeld 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 Universität Bielefeld Danke für die Aufmerksamkeit