Web Services mit REST

Über die Weihnachtstage habe ich nur weniges von meiner Liste offener Punkte erledigen können. Eines aber ist mir doch gelungen: das Buch Web Services mit REST von Leonard Richardson habe ich nun endlich vollständig durchlesen können.

Das es nun so lange gedauert hat liegt gewiss nicht am Buch oder Thema. Der Schreibstil des Autors ist in der deutschen Übersetzung - das englische Original habe ich bisher nicht eingesehen - ist durchaus lesenswert und auch der Inhalt ist interessant. Dennoch konnte ich mich in den Wochen vor Weihnachten nicht wirklich auf das Thema konzentrieren.

Was ist das Thema dieses Buchs?

Der Autor erläutert primär die Prinzipien des Ressourcen-orientierten Architekturansatzes, der eine einfache wie flexible Möglichkeit bietet, die Daten und Funktionen einer Anwendung für einen remote Zugriff anderen Programmen anzubieten. Grundprinzip einer REST Architektur ist es, alle Datenelemente als adressierbares, im normalen Web verfügbare Repräsentation anzubieten. Durch die Wahl einer geeigneten Repräsentation einer Ressource ist dabei die Verwendung durch die unterschiedlichsten Programme möglich.

Um den Zustand der Anwendung zu verändern, werden nur die grundlegenden HTTP Verben GET, HEAD, PUT, DELETE und POST verwendet. Verbindungen der Ressourcen untereinander und die Darstellung von Datensammlungen (Collections) werden einfach durch weiterführende URLs bzw. URL-Listen realisiert. Funktionen, die das Kernelement der SOAP basierten Web Services und der Vorläufertechnologie RPC darstellen, werden in einer REST Architektur auf Zustandsänderungen der Daten abgebildet. So ist die Bestellung eines Newsletters in einer REST Architektur weder eine Funktion des Newsletters noch des Actor; stattdessen wird einfach eine neue Ressource NewsletterAbonnement erzeugt, welche Actor und Newsletter miteinander verknüpft. In der Tat wäre dieses Datenelement auch in einer funktional orientierten Architektur irgendwann irgendwie in der Datenbank angelegt worden.

Der Autor fokussiert in diesem Buch primär auf die Beschreibung der Prinzipien, die hin zu einer tragfähigen REST Architektur führen. Mit unterschiedlichen Beispielen wird die Problemdomäne analysiert und in eine Struktur miteinander vernetzter Ressourcen transformiert. An diesen Beispielen werden die Vor- und Nachteile unterschiedlicher Implementierungsmöglichkeiten miteinander abgewägt.

Zudem werden existierende REST basierte Dienste kritisch betrachtet und die gewählten Lösungen kommentiert. Auf diese Weise erlangt der Leser ein Gefühl für die wahrscheinlich praktikabelsten Ansätze. Dies hilft, in den eigenen Anwendungen ein paar der offensichtlichsten Fehler zu vermeiden.

Das Buch nimmt auch Bezug auf bestehende Frameworks, Ruby on Rails, Django und Restlet, die die Entwicklung einer eigenen REST basierten Anwendung erleichtern. Anders als so viele andere O’Reilly Bücher hat dieses Buch aber nicht den geschätzten “Hands-On” Charakter. Das aber ist nicht als Defizit zu sehen, ist doch der Fokus des Buchs eher die Architektur als die Technologie. Wer Hilfe beim Einsatz der Framworks sucht, muss hier auf zusätzliche Literatur, die es zumindestens für Ruby on Rails reichhaltig gibt, ausweichen.

Fazit

Das Buch vermittelt erfolgreich die Desgin-Philosophie REST basierter Anwendungen und ich kann es jedem, der sich mit diesem Thema beschäftigen will, nur wärmstens ans Herz legen. Das Autor hat esmeines Erachtens geschafft, den richtigen Mittelweg zwischen einer allgemein gehaltenen Beschreibung der Prinzipien und den für eine architektonische Entscheidung notwendigen Implementierungsdetails zu finden. Verzichtbar ist eigentlich nur ein Abschnitt, der eine Kritik an den SOAP basierten fetten Web Services enthält. Die Abwägung der Möglichkeiten und Chancen der unterschiedlichen Architekturansätze hätte auch dem in diesen Themen informierten Leser überlassen werden können.

Weitere Artikel: