Aus dem Englischen How I Explained REST to My Wife von Ryan Tomayko.

 

Ehefrau: Wer ist Roy Fielding ?

 

Ryan: So ein Typ, ein recht schlauer Kopf.

 

Ehefrau: Oh, was hat der denn gemacht?

 

Ryan: Er half dabei, die ersten Webserver zu entwickeln und er hat eine Menge Forschung betrieben, um zu erklären, warum das Web so funktioniert, wie es funktioniert. Sein Name steht mit auf der Spezifikation des Protokolls, das benutzt wird, um Webseiten vom Server bis in Deinen Browser zu bringen.

 

Ehefrau: Wie funktioniert das denn?

 

Ryan: Das Web?

 

Ehefrau: Ja, genau.

 

Ryan: Hmm. Das ist alles ziemlich erstaunlich. Und das Lustige daran ist, das wird alles unterschätzt. Das Protokoll, das ich meine, HTTP, kann jede Menge netter Dinge. Aber aus irgendeinem Grund sieht das niemand.

 

Ehefrau: Du meinst „http“, wie das, was ich im Browser am Anfang eingebe?

 

Ryan: Genau. Dieser erste Teil sagt dem Browser, welches Protokoll er benutzen soll. Was man da eingibt, das ist einer der größten Durchbrüche in der Computergeschichte.

 

Ehefrau: Warum?

 

Ryan: Weil man damit in der Lage ist, den Ort von etwas irgendwo in der Welt zu beschreiben von irgendwo in der Welt. Das ist ein Grundstein des Web. Du kannst dir das vorstellen wie GPS-Koordinaten für Wissen und Information.

 

Ehefrau: Für Webseiten?

 

Ryan: Eigentlich für irgendetwas. Dieser Typ, Roy Fielding, er redete viel darüber, wo diese Dinge hinzeigen. In der Forschungsarbeit, von der ich Dir erzählte. Das Web baut auf einer Architektur auf, die REST genannt wird. REST ermöglicht eine Definition für eine Ressource, also das, wo diese Dinger hinzeigen.

 

Ehefrau: Eine Webseite ist eine Ressource?

 

Ryan: So in der Art, Eine Webseite ist eine Abbildung einer Ressource. Ressourcen sind nur Konzepte. URLs – Also das, was Du in dem Browser eingibst…

 

Ehefrau: Ich weiß, was diese URL ist.

 

Ryan: Ja, richtig. Die sagen dem Browser, dass es da irgendwo ein Konzept gibt. Ein Browser geht dann los und fragt nach einer speziellen Darstellung des Konzepts. Genau genommen fragt der Browser nach der Webseitendarstellung.

 

Ehefrau: Welche Darstellungen gibt es denn sonst noch?

 

Ryan: Eigentlich werden die verschiedenen Darstellungen gar nicht oft benutzt. Meistens hat eine Ressource nur eine einzige Darstellung. Aber wir hoffen, dass dieses Konzept in Zukunft mehr genutzt wird weil es einen Haufen neuer Formate gibt, die überall auftauchen.

 

Ehefrau: Zum Beispiel?

 

Ryan: Hmm. Naja, es gibt da ein Konzept namens Web-Services. Irgendwie versteht darunter jeder ein bisschen etwas anderes, aber im Grunde bedeutet es, dass Maschinen das Web genau so benutzen können wie Menschen.

 

Ehefrau: Hat das wieder was mit Robotern zu tun?

 

Ryan: Nein, nicht wirklich. Ich meine nicht Maschinen, die am Schreibtisch sitzen und im Web surfen. Aber Computer können die gleichen Protokolle nutzen, um Nachrichten untereinander hin und her zu schicken. Wir machen das schon eine Weile so. Aber keine der heutigen Techniken funktioniert so richtig gut, wenn man mit allen Maschinen in der ganzen Welt sprechen muss.

 

Ehefrau: Warum nicht?

 

Ryan: Weil sie nicht dafür ausgelegt sind. Als Fielding und seine Kollegen mit dem Aufbau des Web anfingen, da wollten sie in erster Linie erreichen, dass man mit einer beliebigen Maschine irgendwo in der Welt reden konnte. Für die meisten Techniken, die wir heute für die Computerkommunikation nutzen gab es diese Anforderungen nicht. Man wollte hier meist nur mit einer kleinen Gruppe von Maschinen kommunizieren.

 

Ehefrau: Und jetzt willst Du mit allen Maschinen sprechen.

 

Ryan: Ja, und noch mehr. Wir müssen mit allen Maschinen sprechen über all das Zeug, das auf allen anderen Maschinen liegt. Also brauchen wir eine Möglichkeit, dass eine Maschine mit einer anderen Maschine spricht, und zwar über eine Ressource, die wiederum auf einer anderen Maschine liegen könnte.

 

Ehefrau: Was?

 

Ryan: Sagen wir mal, Du redest mit Deiner Schwester und sie möchte sich den Staubsauger oder so leihen. Aber Du hast den nicht, weil Du ihn Deiner Mutter gegeben hast. Also sagst Du Deiner Schwester, dass sie ihn von Deiner Mutter holen soll. Das passiert dauern im realen Leben und es passiert ebenfalls wenn sich Maschinen unterhalten.

 

Ehefrau: Und wie sagen sich die Maschinen, wo die Dinge sind?

 

Ryan: Natürlich mit dem URL. Wenn alles, worüber die Maschinen sich unterhalten, einen entsprechenden URL hat, dann hat man so etwas wie Hauptwörter – aber für Maschinen…

… Und übertragen auf uns ist es doch ziemlich wichtig, dass Du und ich und der Rest der Welt ein gemeinsames Verständnis darüber haben, wie Hauptwörter eingesetzt werden, oder?

 

Ehefrau: Ja, klar.

 

Ryan: Maschinen haben keine universellen Hauptwörter darum tun sie sich mit manchen Dingen so schwer. Jede Programmiersprache, Datenbank oder auch andere Systeme und Anwendungen haben einen anderen Weg mit solchen Hauptwörtern umzugehen.

 

Ehefrau: Aber wenn ich eine Webseite ansehe, denke ich darüber gar nicht nach.

 

Ryan: Das macht niemand. Außer Fielding und eine handvoll anderer Leute. Darum sind Maschinen oft blöd.

 

Ehefrau: Was ist mit Verben, Pronomen und Adjektiven?

 

Ryan: Interessante Frage. Das ist nämlich ein anderer großer Aspekt von REST. Gut, Verben sowieso.

 

Ehefrau: Das war nur ein Witz.

 

Ryan: Das war ein guter Witz, aber eigentlich ist es gar kein Witz. Verben sind sehr wichtig. Es gibt da ein wichtiges Konzept in der Programmierung und in der Informatik – Polymorphismus. Das ist die geekige Art, zu sagen, dass verschiedene Hauptwörter zusammen mit dem gleichen Verb verwendet werden können.

 

Ehefrau: Verstehe ich nicht.

 

Ryan: Na gut. Schau Dir den Kaffeetisch an. Was sind die Hauptwörter? Tasse, Tablett, Zeitung, Fernbedienung. Und was kann man mit all diesen Dingen tun?

 

Ehefrau: Ich verstehe nicht, was Du meinst.

 

Ryan: Du kannst sie holen, richtig? Du kannst sie nehmen. Du kannst sie umwerfen. Du kannst Sie verbrennen. Du kannst alle diese Verben auf alle diese Dingen anwenden.

 

Ehefrau: OK…und?

 

Ryan: Nun; das ist wichtig. Was wäre, wenn ich Dir nicht sagen könnte „Hole die Tasse.“ und „Hole die Zeitung.“ und „Hole die Fernbedienung“ ? Was, wenn wir für jedes Hauptwort ein anderes Verb verwenden müssten? Ich könnte nicht generell das Wort „hole“ verwenden und müsste für jede Verb-Hauptwort-Kombination ein neues Wort ausdenken.

 

Ehefrau: Wow, das ist verrückt.

 

Ryan: Ja, ist es. Unser Gehirn ist irgendwie schlau genug, um zu wissen, dass dasselbe Verb mit vielen verschiedenen Substantiven – also Hauptwörtern – verwendet werden kann. Einige Verben sind spezieller als andere und passen nur zu einer kleineren Anzahl von Substantiven. Zum Beispiel kann man keine Tasse ‚fahren’ oder ein Auto ‚trinken’. Aber einige Verben, wie HOLEN, HINTUN, LÖSCHEN sind fast universell verwendbar.

 

Ehefrau: Man kann eine Tasse nicht LÖSCHEN.

 

Ryan: OK. Gut, aber man kann sie wegwerfen. Aber das ist ein anderer Witz, richtig?

 

Ehefrau: Ja.

 

Ryan: Wie dem auch sei, HTTP – das Protokoll, das Fielding und seine Freunde entworfen haben – verwendet Verben mit Substantiven. Ein Beispiel: Wenn Du auf eine Webseite gehst, dann macht der Browser ein HTTP – GET (HOLEN) mit dem URL, den Du in den Webbrowser eingegeben hast und dann kommt die Webseite zurück.

 

Webseiten haben normalerweise Bilder, richtig? Das sind separate Ressourcen Die Webseite gibt den URL dieser Bilder an und der Browser setzt weitere HTTP GET (HOLEN) Befehle ab, bis er alle Ressourcen der Webseite erhalten hat und dann kann die Webseite dargestellt werden. Aber das Wichtige daran ist, dass sehr unterschiedliche Arten von Hauptwörtern in der gleichen Weise behandelt werden können. Ob es nun ein Bild, ein Text, ein Video, ein MP3, eine Präsentation oder was auch immer ist. Ich kann diese Dinge in der gleichen Weise HOLEN indem ich einen URL angebe.

 

Ehefrau: Klingt ganz so, als sei HOLEN ein ziemlich wichtiges Verb.

 

Ryan: Ist es. Insbesondere wenn Du einen Webbrowser benutzt, denn Browser sind ziemlich auf’s HOLEN ausgelegt. Die machen nicht viele andere Interaktionen mit den Ressourcen. Und das ist ein Problem, denn das bringt viele Leute zu der Annahme, dass HTTP nur für’s HOLEN ist. Aber HTTP ist an sich ein universelles Protokoll um Verben mit Substantiven zu nutzen.

 

Ehefrau: Toll. Aber was ändert das? Welche Art von Verben und Substantiven willst Du?

 

Ryan: Nun, die Substantive gibt es – aber nicht im richtigen Format.

Mal angenommen, Du surfst auf amazon.com und suchst etwas zu Weihnachten für mich. Stell Dir die Produkte als Substantive vor. Wenn diese nun in einer Form vorlägen, die eine Maschine verstehen kann, dann könnte man eine Menge toller Dinge damit anstellen.

 

Ehefrau: Wieso kann denn ein Computer eine normale Webseite nicht verstehen?

 

Ryan: Weil Webseiten dafür gemacht sind, dass Menschen sie verstehen können. Einer Maschine sind das Layout und das Styling egal. Maschinen benötigen legiglich die Daten. Idealerweise hätte jeder URL eine maschinenlesbare und eine für Menschen lesbare Darstellung. Wenn ein Computer eine Ressource HOLEN will, dann benutzt er die maschinenlesbare Form. Wenn ein Browser eine Ressource für einen Menschen HOLEN soll, dann fragt er nach der für Menschen lesbaren Variante.

 

Ehefrau: Also müssten die Menschen ihre Webseiten in Maschinenformaten hinterlegen?

 

Ryan: Wenn es einen Nutzen bringt.

 

Sieh mal, wir haben darüber jetzt ziemlich abstrakt geredet. Lass und doch ein konkretes Beispiel nehmen. Du bist Lehrerin – ich wette, in der Schule habt Ihr ein Computersystem, wahrscheinlich sogar drei oder vier Computersysteme, mit denen Ihr die Schüler verwaltet. Ihre Klassen, ihre Abschlüsse, Notfallrufnummern, Informationen über die verwendeten Schulbücher und so weiter… Wenn diese Systeme webbasierende Systeme sind, dann gibt es vermutlich einen URL für alle betreffenden Substantive: Schüler, Lehrer, Klasse, Buch, Raum, und, und, und. Im Moment gibt das Holen des URL durch den Browser eine Webseite. Wenn es aber eine maschinenlesbare Darstellung für jeden URL gäbe, dann wäre es trivial, neue Werkzeuge ins System einzuklinken weil die Informationen über einen standardisierten Weg abrufbar wären. Das würde es auch ein gutes Stück einfacher machen, die Systeme miteinander sprechen zu lassen. Oder man könnte ein landesweites System bauen, das in der Lage wäre, von allen Schulen Daten abzurufen um z.B. Prüfungsergebnisse zu sammeln. Die Möglichkeiten sind endlos.

 

Alle Systeme könnten mit einem simplen HTTP GET Daten untereinander austauschen. Wenn ein System bei einem anderen System Daten zufügen muss, dann würde es diese per HTTP POST verschicken. Wenn ein System etwas in einem anderen System aktualisieren möchte, benutzt es ein HTTP PUT. Das einzige, worüber man sich noch Gedanken machen müsste, wäre, wie die Daten aussehen sollen.

 

Ehefrau: Und daran arbeitest Du und die anderen Computerleute gerade? Entscheiden, wie die Daten aussehen sollen?

 

Ryan: Leider nein. Stattdessen arbeitet die Mehrheit daran, komplexe Spezifikationsschichten zu entwerfen, um dieses Zeug in anderer, bei Weitem nicht so nützlicher und eleganter Weise zu tun. Substantive sind nicht universell und Verben nicht mehrfach verwendbar. Wir werfen Jahrzehnte von Erfahrungen und ausgetesteter Technik über den Haufen und fangen neu an mit etwas, das viel Ähnlichkeit mit Dingen hat, die in der Vergangenheit fehlgeschlagen sind. Wir benutzen HTTP, aber nur weil wir dann weniger mit unseren Netzwerk- und Sicherheitsleuten sprechen müssen. Wir tauschen Einfachheit gegen tolle Tools und bunte Assistentenprogramme.

 

Ehefrau: Warum?

 

Ryan: Keine Ahnung.

 

Ehefrau: Warum sagst Du nicht.

 

Ryan: Vielleicht mache ich das.