« neues aus der Entwicklung ;-) | Main | Break »

Eine Art Aha Erlebnis

Ich bin - eher durch Zufall auf folgendes Video von Stefan und Phillip gestoßen und nach dem Ansehen sind mir ein paar Dinge glasklar geworden:

Bisher hatte ich gedacht, dass REST eher als eine Art Spezialfall von HTTP ist. Seltsamerweise scheint es demnach allerdings anders herum der Fall zu sein.
Irgendwie machen jetzt auch die beiden letzten Kommentare mehr Sinn.

Ich halte die Darstellung des REST Prinzips für äußerst gelungen und hat mich seltsamerweise auch eine ganze Ecke mehr für RoR eingenommen. (Wer kann kann schon anzweifeln, wenn eine Applikation das Potential auf eine Skalierung (durch die Möglichkeit Ressourcen auf unterschiedliche URIs zu verteilen) quasi btw. eingebaut hat.

Ich werde morgen die Aktionen der verschiedenen Ressourcen auf die 4 Funktion POST/GET/DELETE/PUT abbilden.

Ich denke ich werde mich vorerst auf die Serverseite konzentrieren und als Ausgabetypen erstmal einfaches HTML und XML (welches ist ja später für YUI sowieso brauche) bemühen. Unter [1] gibt es auch schon einen Ansatz wie man die URIs dann auch ansteuern kann.

Was wir noch klar geworden ist und mich wirklich bestärkt hat ist, dass ich ein und dieselbe Anwendung als Teilstück auf eine bestehende Webseite einbinden kann (z.B. durch JS).
Allerdings bleiben ein paar Fragen, die sich während des Videos ergeben haben:

1. Ich habe vor einfache HTTP Authentifizierung (Basic Authentication nach RFC 2617) zu benutzen. Stefan meinte ja in dem Video, dass man - um die Zustandslosigkeit zu erhalten - die Authentifizierung bei jedem Zugriff erfolgen soll. Ist das durch die Spezifikation von Basic Authentification gewährleistet? Wenn ich muss lese ich das in der RFC auch nach ;-). Ich habe bisher halt eher mit Sessions gearbeitet und diese als SessionIDS an die URLS angehängt (was ja REST irgendwie wiederspricht - wäre eine Ressource ja nicht mehr eindeutig durch eine URI identifizierbar)

2. Bis auf Downloads habe ich mit curl noch nicht viel gemacht. Gibt es da irgendwo ein Tutorial zu? Grade so Möglichkeiten wie den Header zu ändern suche ich schon lange. Bisher habe ich - wenn ich den "Reintext" aus Abfragen erhalten wollte immer Telnet bemüht.

3. Als Stefan das XML Schnippsel gesendet hat, ist auf der Auflösung des Videos nicht wirklich ersichtlich welche URI jetzt aufgerufen wird. Meiner Meinung nach müsste es ja Customer (glaube der bekam die neue Stadt) und ein PUT (weil Veränderung) gewesen sein, aber vielleicht könnte ich das noch bestätigt bekommen :-)

4. Mit den Conditional Headern: Das klingt in erster Linie ein wenig nach gestreckter/gehackter Spezifikation. Ist das eine gängige Praxis oder dient das wirklich nur zur Behandlung von ganz harten Fällen?


Abschließend noch mal ein Kompliment an Stefan und Phillip. Irgendwie haben mir die nächtlichen 45 min grade eine ganze Menge weitergeholfen. Solche Videos sollten zu Youtube ;-).

TrackBack

TrackBack URL for this entry:
http://www.innoq.com/movabletype/mt-tb.cgi/2893

Comments (1)

Danke für das Lob ;-) Zu Deinen Fragen:

1. HTTP Authentifizierung ist in der Tat der deutlich bessere Weg - Sessions are evil

2. curl hat eigentlich eine prima Hilfe: curl --help ;-) Am wichtigsten sind die Parameter -H, -X und -d (das sind auch glaube ich alle, die ich benutze)

3. Rails verlangt REST-typisch ein PUT auf die URI einer einzelnen Ressource (z.B. /customers/4711) für ein Update, ein POST auf die Collection (/customers) für eine Neuanlage

4. Die ETag/Last-Modified-Header-Lösung ist alles andere als ein Hack, sondern die Basis für die Skalierbarkeit des Webs ;-) Dein Browser, Newsreader, der Apache HTTPD usw. machen das alle im Prinzip "von allein".

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on November 17, 2007 1:21 AM.

The previous post in this blog was neues aus der Entwicklung ;-).

The next post in this blog is Break.

Many more can be found on the main index page or by looking through the archives.

Powered by
Movable Type 3.31