Kapitel 1: Einleitung stellt die Motivation für den Einsatz von REST dar.
Kapitel 2: Einführung in REST gibt einen kurzen Überblick die wesentlichen Grundprinzipien und Mechanismen von REST und RESTful HTTP.
Kapitel 3: Fallstudie: OrderManager stellt anhand einer einfa-chen Bestellverwaltung vor, wie die Grundprinzipien von REST für eine einfache Anwendung eingesetzt werden können, die über HTTP programmatisch genutzt werden kann. Dabei liegt der Fokus nicht auf inhaltlicher Vollständigkeit oder technischer Raffinesse, sondern auf der Illustration der wesentlichen Konzepte.
In Kapitel 4: Ressourcen beschäftigen wir uns mit dem abstrakten Konzept von Ressourcen und seiner konkreten Ausprägung im WWW. Neben der Identifikation mit Hilfe von URIs und der Einführung von Repräsentationen finden Sie hier auch Hinweise auf ein sinnvolles und REST-konformes Ressourcen- und URI-Design.
Kapitel 5: Verben stellt das Abstrakte Konzept von Schnittstellen mit einem immer gleichen Satz von Operationen und die konkrete Ausprägung in HTTP vor. Neben den vordefinierten Verben aus dem HTTP-Standard werden auch einige aktuell in Diskussion befindliche neue sowie die Möglichkeit zur Definition eigener Verben beschrieben.
Das Kapitel 6: Hypermedia spielt eine zentrale Rolle für das Verständnis von REST jenseits einfacher CRUD-Beispiele. Dahinter verbirgt sich das Konzept, Ressourcen miteinander zu verknüpfen, den Kontrollfluss einer Applikation dynamisch zu steuern und separat entwickelte Ressourcen unabhängig von ihrer Implementierungsstrategie oder ihrer Lokation zu kombinieren.
Kapitel 7: Repräsentationsformate beschäftigt sich mit den Datenformaten, die in REST/HTTP-Anwendungen in der Regel zum Einsatz kommen. Dabei werden die Vor- und Nachteile verschiedener Formate diskutiert und Hinweise zu deren Anwendung geliefert.
In Kapitel 8: Fallstudie: AtomPub finden Sie eine Beschreibung eines REST-konformen Protokolls zur Manipulation von Inhalten wie z.B. Einträgen in Weblogs oder Artikeln in einem CMS-System. Das Atom Publishing Protocol (AtomPub) ist ein offizieller Standard, der unter Beteiligung diverser Web-Experten und REST-Verfechter definiert wurde und daher in vielerlei Hinsicht der Musterknabe der REST-Familie ist.
In Kapitel 9: Sitzungen und Skalierbarkeit erfahren Sie mehr über den Zusammenhang zwischen der Skalierbarkeit eines Systems und der Rolle, die der Verzicht auf eine sitzungsbehaftete Kommunikation dafür spielt. Thema sind neben der Motivation auch Empfehlungen, wie Sie einen Session-orientierten in einen Session-freien Entwurf überführen können.
Kapitel 10: Caching beschäftigt sich mit der wichtigsten Performance-Optimierung im WWW und zeigt, wie Sie die beiden unterschiedlichen dafür vom HTTP-Protokoll unterstützten Verfahren – Validierungs- und Expirationsmodell – für Geschäftsanwendungen mit einer REST-Architektur nutzen können.
Kapitel 11: Sicherheit gibt einen kurzen Abriss über die wesentlichen Sicherheitskonzepte im REST/HTTP-Umfeld und stellt neben allgemeinen Konzepten und den in HTTP integrierten Authentifizierungsmechanismen verschiedene Standards wie SSL, OpenID und OAuth vor.
Das Kapitel 12: Dokumentation beschäftigt sich mit Strategien zur Dokumentation von REST-Anwendungen, auf Basis einfacher HTML-Seiten ebenso wie mit Hilfe von standardisierten Beschreibungssprachen wie WSDL, RDDL oder WADL.
Thema von Kapitel 13: Erweiterte Anwendungsfälle sind asynchrone Verarbeitung, zuverlässige Zustellung, Transaktionen und die Konflikterkennung bei parallelen Zugriffen.
In Kapitel 14: Fallstudie: OrderManager, Iteration 2 erweitern wir unser Beispiel aus Kapitel 2 sowohl fachlich als auch technisch mit Hilfe des Wissens aus den Kapiteln 3-12, um Ihnen einen realistischen Eindruck von den typischen Entwurfsentscheidungen bei einer nicht-trivialen REST-Anwendung zu geben.
Kapitel 15 „Enterprise REST“: SOA auf Basis von RESTful HTTP setzt die Konzepte von REST und die Technologien des Web in Beziehung zu Service-orientierten Architekturen (SOA) und zeigt, wie diese beiden Ansätze zusammen passen können. Darüber hinaus finden Sie hier eine Diskussion über die Vor- und Nachteile von Web-Services auf Basis von WSDL, SOAP und WS-* im Vergleich zu REST und HTTP.
Im Anhang schließlich erfahren Sie mehr über die Werkzeuge, die Ihnen für eine konkrete Umsetzung einer REST/HTTP-basierten Lösung zur Verfügung stehen und finden eine Übersicht der HTTP-Statuscodes, eine Beschreibung einiger fortgeschrittener HTTP-Mechanismen wie Pipelining und persistente Sessions, einen Verweis auf diverse Online-Ressourcen mit weiterführenden Informationen, eine Liste der Referenzen sowie den Index.
Vorwort
Danksagung
1 Einleitung
1.1 Warum REST?
1.1.1 Lose Kopplung
1.1.2 Interoperabilität
1.1.3 Wiederverwendung
1.1.4 Performanz und Skalierbarkeit
1.2 Zielgruppe und Voraussetzungen
1.3 Zur Struktur des Buches
2 Einführung in REST
2.1 Eine kurze Geschichte von REST
2.2 Grundprinzipien
2.3 Zusammenfassung
3 Fallstudie: OrderManager
3.1 Fachlicher Hintergrund
3.2 Ressourcen
3.2.1 Bestellungen
3.2.2 Bestellungen in unterschiedlichen Zuständen
3.2.3 Stornierungen
3.3 Repräsentationen
3.4 Zusammenfassung
4 Ressourcen
4.1 Ressourcen und Repräsentationen
4.2 Ressourcen-Design
4.2.1 Primärressourcen
4.2.2 Subressourcen
4.2.3 Listen
4.2.3.1 Filter
4.2.3.2 Paginierung
4.2.4 Projektionen
4.2.5 Aggregationen
4.2.6 Aktivitäten
4.2.7 Konzeptressourcen
4.2.8 Evolutionäre Weiterentwicklung und YAGNI
4.3 Ressourcenidentifikation und URIs
4.3.1 URI, IRI, URL, URN, XRI?
4.3.2 Anatomie einer HTTP-URI
4.3.2.3 Schema und Host
4.3.2.4 Relative und absolute Pfade
4.3.2.5 Query-Parameter
4.3.2.6 Matrix-Parameter
4.3.2.7 Fragment-ID
4.3.3 URI-Templates
4.4 URI-Design
4.4.1 URI-Entwurfsgrundsätze
4.4.2 REST aus Versehen
4.4.3 Stabile URIs
4.5 Zusammenfassung
5 Verben
5.1 Standardverben von HTTP 1.1
5.1.1 GET
5.1.2 HEAD
5.1.3 PUT
5.1.4 POST
5.1.5 DELETE
5.1.6 OPTIONS
5.1.7 TRACE und CONNECT
5.2 HTTP-Verben in der Praxis
5.3 Tricks für PUT und DELETE
5.3.1 HTML-Formulare
5.3.2 Firewalls und eingeschränkte Clients
5.4 Definition eigener Methoden
5.4.1 WebDAV
5.4.2 Partial Updates und PATCH
5.4.3 Multi-Request-Verarbeitung und BATCH
5.5 Zusammenfassung
6 Hypermedia
6.1 Hypermedia im Browser
6.2 HATEOAS und das „Human Web“
6.3 Hypermedia in der Anwendung-zu- Anwendungkommunikation
6.4 Ressourcenverknüpfung
6.5 Einstiegspunkte
6.6 Aktionsrelationen
6.7 Das -Element
6.8 Standardisierung von Link-Relationen
6.9 Zusammenfassung
7 Repräsentationsformate
7.1 Formate, Medientypen und Content-Negotiation
7.2 XML
7.3 HTML/XHTML
7.4 Textformate
7.4.1 Plaintext
7.4.2 URI-Listen
7.5 CSV
7.6 JSON
7.7 RSS und Atom
7.8 Binäre Formate
7.9 Microformats
7.10 RDF
7.11 Zusammenfassung
8 Fallstudie: AtomPub
8.1 Historie
8.2 Discovery und Metadaten
8.3 Ressourcentypen
8.4 REST und Atom/AtomPub
8.5 Zusamenfassung
9 Sitzungen und Skalierbarkeit
9.1 Cookies
9.2 Ressourcen- und Client-Status
9.3 Skalierbarkeit und „Shared Nothing“-Architektur