Übersicht

Unter HTTP-Routing versteht man die Zuordnung (Mapping) zwischen einem Request und einem ausführbaren Objekt, dem Presenter. Ein Request besitzt unterschiedliche Eigenschaften und Attribute. So besitzt jeder Request eine URL, eine HTTP-Methode und weitere Header.

Hinweis

Die Auswertung der Routingtabelle erfolgt von oben nach unten. Trifft eine Aussage zu, so wird diese als Anweisung an die Applikation übergeben.

Routen

Eine Route setzt sich im wesentlichen aus der Methode (GET, POST, PUT, ...) und der URL (http://example.com) zusammen. Die Routen werden in dieser Komponente in Textdateien definiert. Es sind zwei unterschiedliche Formate für die Definition von Routen möglich.

Mit Hilfe der einfachen Route-Datei lassen sich einfache Routen schnell definieren.

Komplexere Routen lassen sich über XML-Dokumente spezifizieren.

Die Übersetzung der Textdatei in ein Route-Objekt übernimmt der entsprechende Parser.

Hinweis

Routen können auch in Datenbanken-Tabellen oder NoSQL-Objektspeichern ablegen. Hierzu muss nur ein ensprechender Parser und ggf Router geschrieben werden.

Router

Der Router ist eine Klasse, die einen Request analysiert und anhand der definierten Route den spezifizierten Presenter erstellt und die entsprechende Methode aufruft. Verschiedene Klassen legen dabei den Schwerpunkt auf unterschiedliche Aspekte.

Die Standard-Router Klasse heisst DefaultRouter. Bei großen Routingtabellen kommt die Klasse PartialRouter zum Einsatz. Dieser Router liesst nur den aktuell zu benutzenden Teil der Routingtabelle ein.

Überschreiben der HTTP-Methode

Da bei HTML-Formularen nur GET und POST möglich sind, kann die HTTP-Methode mit verschiedene Techniken überschrieben werden.

http://www.w3.org/html/wg/drafts/html/master/forms.html#attributes-for-form-submission

X-HTTP-Method-Override: PUT > // Google/GData X-HTTP-Method: PUT > // Microsoft X-Method-Override: PUT > // IBM

Paramter

Mit dem Attribute "name = X_HTTP_METHOD_OVERRIDE " als hidden Feld in einem Formular kann die Methode überschrieben werden. Hierzu muss das Formular mit POST übergeben werden.

Beispiel:

<form method="post" action="/index.php">
 <input type="hidden" name="X_HTTP_METHOD_OVERRIDE" value="DELETE" >
 <input type="input" name="test">
 <input type=submit>
</form>

Hinweis

Der Parameter muss nicht in der Route definiert werden.