Websiteentwicklung: Ruby on Rails: Eine Ruby on Rails Applikationen von Außen
Woran erkennt man eine Rails-Applikation?
Betrachten wir dazu die Demo-Site von Redmine, einer Projektmanagement-Applikation die in Ruby geschrieben ist.
URLs
BearbeitenDie URLs einer Rails-Applikation haben meist keine Endung, oft keine Parameter. Statt dessen ist die Information direkt im Pfad:
http://demo.redmine.org/projects/learnrails/boards http://demo.redmine.org/projects/learnrails/boards/453 http://demo.redmine.org/projects/learnrails/boards/454 http://demo.redmine.org/projects/learnrails/boards/455
Dahinter stecken aber nicht Ordner in einem Filesystem, sondern diese URL wird auf Controller, Actions und Parameter umgeschrieben.
der Kommandozeilen-Befehl rake routes zeigt die Regeln dafür an:
GET /projects/:project_id/boards {:controller=>"boards", :action=>"index" } GET /projects/:project_id/boards/:id {:controller=>"boards", :action=>"show" }
Die action index zeigt dabei eine Liste (der Boards) an, die action show zeigt ein einzelnes Board an.
Für fortgeschrittene ProgrammiererInnen
BearbeitenREST
BearbeitenDiese Struktur der URLs ist aber nur der offensichtlichste Teil eines tiefergehenden Plans. Nicht nur GET, sondern auch die anderen HTTP-Methoden werden verwendet:
GET /dings {:controller=>"dings", :action=>"index" } # zeigt eine liste aller dinge POST /dings {:controller=>"dings", :action=>"create" } # erzeugt ein neues ding (id steht noch nicht fest) GET /dings/new {:controller=>"dings", :action=>"new" } # zeigt ein Eingabeformular für ein ding GET /dings/:id/edit {:controller=>"dings", :action=>"edit" } # zeigt ein Bearbeitungsformular für ein bestehendes ding GET /dings/:id {:controller=>"dings", :action=>"show" } # zeigt ein bestimmtes ding an PUT /dings/:id {:controller=>"dings", :action=>"update" } # speichert/ändert ein bestehendes ding DELETE /dings/:id {:controller=>"dings", :action=>"destroy"} # löscht ein ding
Das ist die Grundstruktur die für verschiedene Ressourcen immer wieder gleiche verwendet werden kann. Die Idee dahinter ist REST[1].
Webservice
BearbeitenMit der Endung .xml kann die Rails-Applikation auch XML als Output liefern:
GET /dings.xml POST /dings.xml GET /dings/new.xml GET /dings/:id/edit.xml GET /dings/:id.xml PUT /dings/:id.xml DELETE /dings/:id.xml
Damit bietet die Web-Applikation automatisch eine REST Webservice Schnittstelle an. Das kann man für AJAX verwenden oder als API für die Applikation.
(Oder man ignoriert es erst mal.)
Quellen
- ↑ Tilkov(2007): A Brief Introduction to REST. In: InfoQ.