Ergebnis 1 bis 6 von 6

Thema: REST und warum ich es wohl nie verwenden werde

  1. #1

    REST und warum ich es wohl nie verwenden werde

    Dieser Artikel war eigentlich in ähnlicher Form für Dev-Comm gedacht, aber da die Seite momentan von kaum jemandem gelesen wird, gibts erstmal nen Post hier im Forum, den ich dann später umarbeite.

    Bei der Arbeit an der Würfelorgie Seite, die ich mit Ruby on Rails schreibe, bin ich über RESTful Rails gestolpert, worauf scheinbar die Mehrheit aller Rails-Coder total abfährt. RESTful Rails ist, wie der Name schon vermuten lässt, eine Implementierung von REST für Rails. Ich hab mir einige Gedanken gemacht, ob ich es einsetzen soll oder nicht und die Argumente dafür und dagegen möchte ich euch nicht vorenthalten.

    REST - Representational State Transfer
    REST ist ein Webstandard oder viel mehr eine Richtlinie, die vorsieht, dass jede Ressource über eine eigene URI* addressiert werden kann. Das geschieht beispielsweise im Format http://host/typ/id, etwa http://www.youtube.com/user/DFYX oder auch http://de.wikipedia.org/wiki/REST, wobei sowohl die Wikipedia als auch Youtube das Konzept nur sehr inkonsequent anwenden. Nämlich da, wo REST sich von anderen Vorgehensweisen drastisch unterscheidet. Aktionen wie "anzeigen", "erstellen", "löschen" und "bearbeiten" stehen nicht in der URI, sondern werden über die HTTP Zugriffsmethode (oder vergleichbares, wenn ein anderes Protokoll zum Einsatz kommt) beim Aufruf übergeben. Aus GET http://www.multimediaxis.de/newthrea...stthread&f=115 (so habe ich diese Seite grade aufgerufen) würde dann vielleicht POST http://www.multimediaxis.de/forums/115/threads, POST http://www.multimediaxis.de/forums/w...cklung/threads oder irgendwas in der Art werden.

    Die Vorteile
    Diese standardisierte Form der URIs macht es natürlich sehr einfach, Programme zu schreiben, die auf die Ressourcen zugreifen und sie verändern können, besonders, wenn die Website zusätzlich zu HTML-Seiten auch XML-Dokumente, die nur die jeweilige Ressource beinhalten, anbietet. Man könnte also beispielsweise ein Verwaltungstool schreiben oder Webanwendungen miteinander kommunizieren lassen. Mehr als cURL und ein XML-Parser sind nicht nötig, um die Kommunikation zustande zu bekommen.

    Die Nachteile
    Das große Problem bei REST ist die Sache mit den HTTP Methoden. Die meisten User werden sich die Seite als (X)HTML anzeigen lassen und das sieht leider vor, dass alle Links mit GET aufgerufen werden. Das method-Attribut gibt es nur für <form> und nicht für <a>. Damit bleibt nur eine Lösung mit JavaScript, was nicht wirklich elegant ist und noch dazu alle User ohne JavaScript aussperrt. Und das bei einem Standard, der einen einfachen und einheitlichen Zugriff auf Websites ermöglichen soll. Doch selbst, wenn es irgendwann eine Möglichkeit geben sollte, diese Hürde zu überwinden (oder ich sie bis jetzt einfach übersehen habe), dann bleibt noch das Problem, dass man zu eher uneleganten Mitteln greifen muss, wenn man mal mehr Aktionen braucht, als nur GET, PUT, POST und DELETE.

    Fazit
    Ich finde die Idee wirklich toll, sie sorgt für saubere und leicht verständliche URIs und die Implementierung ist besonders mit einem Ressourcenorientierten Framework wie Rails (aber mit etwas Arbeit auch mit PHP) einfach, aber an der technischen Umsetzung in Bezug auf andere Standards haperts. Deshalb werde ich wohl vorerst die Finger davon lassen. Wer aber eine Website baut, die ohnehin nicht ohne JavaScript auskommt, der sollte unbedingt mal einen Blick drauf werfen.

    * was ist eigentlich korrekt: der URI oder die URI? Logischer wäre der, aber umgangssprachlich üblicher ist eigentlich die. Selbst im Wikipediaartikel über REST wird beides kreuz und quer verwendet.

  2. #2
    REST sehe ich auf einer Ebene mit dem klassischen Semantic Web: Eine nette Idee, aber weltfremd. Wenn wir nicht die hergebrachte Browserkultur hätte, wäre REST sicher ein interessanter Ansatz; im heutigen Internet aber ist es nur eine weitere Spielerei, die in einer sehr kleinen Zahl von Fällen tatsächlich einen Nutzen hat.

    Immerhin einen Teil hat REST richtig hingekriegt: Kurze URIs. URIs sind heutzutage einfach zu lang und enthalten oft auch etwas sinnlos erscheinende Informationen (so beinhaltet der URI, über den ich gerade zur Postmaske gekommen bin, den amüsanten Substring "newreply.php?do=newreply").

    Vielleicht sollte man HTTP HTTP sein lassen und sich lieber auf URIs im Format protokoll://host/typ/id/action einigen. Damit bleiben die URIs auch kurz, Standardaktionen wären programmatisch einfach zu erreichen (sofern man sich auf ein paar Standardverben einigt) und wir müssen nicht über Nacht das gesamte Internet auf eine neue Technologie mit fragwürdigem Mehrwert umstellen.


    Zum Thema "URI": Der URI. Es sei denn, wir sind PC und sagen "der/die universelle Ressourcen-IdentifikatorIn".

  3. #3
    Zitat Zitat von Jesus_666 Beitrag anzeigen
    Vielleicht sollte man HTTP HTTP sein lassen und sich lieber auf URIs im Format protokoll://host/typ/id/action einigen. Damit bleiben die URIs auch kurz, Standardaktionen wären programmatisch einfach zu erreichen (sofern man sich auf ein paar Standardverben einigt) und wir müssen nicht über Nacht das gesamte Internet auf eine neue Technologie mit fragwürdigem Mehrwert umstellen.
    Die Defaulteinstellung von Rails ist protokoll://host/typ/action/id, aber ich werde wohl auf protokoll://host/typ/id/action/parameter umsteigen.

  4. #4
    URIs wie 'newreply.php?do=newreply' sind ein - ich nenn es mal einfach so - "Relikt" aus vergangenen Zeiten, wo PHP4 noch weiter verbreitet war als PHP5 (ähhh... also heute noch. srly.). Mit PHP5 und den erweiterten OOP möglichkeiten kahmen dann auch die MVC Frameworks, welche sich an Struts oder Rais orientierten und welche für mich der größte Quantensprung in der PHP Entwicklung darstellen. Aus gründen der SEO unterstützen die meisten dann auch diese tollen kuzen URIs (bsp Zend Framework [/Modul]/Controller/Action[/paramN/valN]. Mittlerweile scheinen die Crawler aber nachgezogen zu haben und die kuzen URIs sind noch da, weil sie schlicht awesome sind.

    Zu REST: In meiner direkten Umgebung setze ich REST in mehreren Projekten ein. Gerade für schnelle Use-Cases oder Prototypen komm ich nicht mehr drum rum. Ein schönes Beispiel ist ein QR-Code (2d Barcodes) Modul, welches ich für einen Adserver geschrieben habe. Wird dieses Modul über die URL angesprochen, liefert es eine XML mit einer XSL. Passiert das im Browser wird eine schöne HTML Seite geformt - passiert das über des Anzeigensystem (MFC) kann dieses einfach die XML weiter verarbeiten und die XSL ignorieren. REST ist für mich nicht mehr oder weniger als Daten über die URL anzufordern

  5. #5
    Für mich hört es sich an, als wäre REST in deinem Fall... ein stinknormaler HTTP-Query. XSL(T) ist an sich von REST unabhängig; der einzigartige Teil bei REST ist ja, daß der URI nicht mehr repräsentiert, was man mit der Ressource tun möchte.

  6. #6
    Mehr ist es ja auch nicht - nur das man ggf mehr PUT und DELETE verwendet, was wiederum auch in HTTP spezifizeirt ist - aber vom standart Browseranwender dann wohl doch eher selten verwendet wird. Jo klar ist XSLT ne eigene Sache, aber in verbindung mir REST ergeben sich tolle Anwendungsfälle.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •