Ist Rails RESTful?

1 Mrz

Obwohl ich zwar nun zum Ende meiner Masterarbeit den theoretischen Teil eigentlich schon abgeschlossen hatte, bin ich auf einen exzellenten Blogpost gestoßen, der schon lange in mir rumorende Fragen zum Thema Rails &REST beantwortet.

Zusammenfassung:
Da Rails die selben Ressourcen (= in etwa die Klassen im Domain-Modell) nutzt, um sowohl eine darauf aufbauende Webapplikation, als auch eine mögliche API mit Daten zu versorgen, kommt es oft zur falschen Annahme, dass sowohl die Webapplikation als auch die API beide den REST-Architekturstil umsetzen bzw. umsetzen müssen.

Diese Annahme ist schon falsch, weil Webbrowser (die also Webapplikationen konsumieren) keine REST-Clients sein können, weil sie a) nur die beiden HTTP-Methoden POST und GET unterstützen und sich b) direkt an menschliche Nutzer richten. REST-APIs dienen aber der Maschine-zu-Maschine-Kommunikation.

Achtung, kontroverser Satz: Folglich ist REST für mit Rails entwickelte Webapplikationen weder erforderlich noch besonders bedeutsam.

 
Allerdings führt die direkte Adressierung von Ressourcen unter Anwendung des MVC-Musters zu einem geordneten Anwendungsdesign, bei dem jeder Controller für einen spezifischen Satz an möglichen Aktionen zuständig ist. Anders gesagt, Rails ist resourceful aber nicht zugleich RESTful.

Dies sieht man z.B. auch daran, dass in den RailsGuides (den offiziellen Hilfeseiten von Rails)  immer von „Resourceful-Routes“ die Rede ist. Es hat sich im Internet halt nur fälschlicherweise eingebürgert, fast alles, was über HTTP läuft und nicht SOAP ist, als „REST“ zu bezeichnen.

Jetzt noch ein möglicherweise verwirrender Hinweis:
Viele der modernen und JavaScript-lastigen Webframeworks nutzen das XML HTTP Request-Objekt. Dieses kann (im Gegensatz zum Webbrowser) als REST-Client angesehen werden, da es alle HTTP-Methoden unterstützt und sozusagen als Mittler zwischen Webbrowser und einem Daten-liefernden Dienst fungiert. Wird das XHR eingesetzt, spielt REST also doch wieder eine Rolle bei Webapplikationen.

Vielleicht ist auch noch für den einen oder anderen die Präsentation vom Erfinder des REST-Architekturstils auf der Railsconf2007 interessant. Insbesondere Folie 24 wo er andeutet, was in Rails verbessert werden könnte

2 Antworten to “Ist Rails RESTful?”

  1. Julian Maicher 2. März 2012 um 12:39 #

    Die Tatsache, dass Webbrowser „nur“ GET und POST unterstützen liegt nicht an den Webbrowsern, sondern an der Limitierung des HTML-Standards. Als Ergänzung zu deinen Ausführungen ist vielleicht noch interessant, warum speziell die HTTP-Methoden PUT und DELETE zum Absenden von HTML-Formularen keinen Sinn machen. Dazu sind die Kommentare im W3C-Bugtracker zum Vorschlag, PUT und DELETE in die HTML5-Spezifikation aufzunehmen ganz interessant: https://www.w3.org/Bugs/Public/show_bug.cgi?id=10671

  2. wollepb 2. März 2012 um 12:43 #

    Man beachte die Kommunikation um diesen Tweet: https://twitter.com/#!/wollepb/status/175552523430662146

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: