Übersicht¶
Unter HTTP-Routing versteht man das Mapping zwischen einem Request und einem ausführbaren Objekt. Das HTTP-Routing besteht aus mehreren Bestandteilen, die im folgendne genauer betrachtet werden.
HTTP-Methode¶
Gültige HTTP Request Methoden für HTTP sind GET, POST, PUT, DELETE und HEAD.
URI-Muster¶
Das URI-Muster kann entweder eine feste Zeichenkette oder ein Regulärer Ausdruck sein. Reguläre Ausdrücke werden mittels
der PREG
-Methoden ausgewertet. Alle gültigen RegEx-Muster sind erlaubt.
Statische Pfade¶
Bei statischen Pfaden ist eine fest definierte Zeichenkette ohne regulären Ausdruck definiert. Außerdem ist diese
Route auch noch über die ID aufrufbar. http://localhost/page/lists
ist in diesem Fall also gleichbedeutend mit
http://localhost/550e8400-e29b-11d4-a716-446655440002`.
GET /page/lists \Application\App\Web\Page 550e8400-e29b-11d4-a716-446655440002
Einbetten in Templates¶
Um in der Anwendung auf die definierten URI zugreifen zu können, besteht die Möglichkeit einer Rückwärtssuche über die ID.
Pfade mit dynamischen Teilen¶
Bei Pfaden mit dynamischen Teilen kann entweder ein fester Wert, ein Wildcard oder ein regulärer Ausdruck für den dynamischen Teil verwendet werden. Der dynamische Teil muss dabei immer in geschweiften Klammern notiert werden.
GET /page/{id} \Application\App\Web\Page 550e8400-e29b-11d4-a716-446655440000
GET /page/{id}/sub/{[a-z]+name} \Application\App\Web\Page 550e8400-e29b-11d4-a716-446655440001
Priorisierung¶
Die Auswertung der Routingtabelle erfolgt von oben nach unten. Trifft eine Aussage zu, so wird diese als Anweisung an die Applikation übergeben.
Presenter¶
Der Presenter implementiert die Logik für die Darstellung des Objektes und muss über den kompletten Namen der Zielklasse definiert werden.
Klasse | Typ |
---|---|
Alvine\Application\Web\Model\Generic | Model |
\Alvine\Application\Web\View | View |
\Alvine\Application\Web\Route | Route |
\Alvine\Application\Web\Presenter | Presenter |
\Alvine\Application\Web\DefaultRouter | Router |
\Alvine\Application\Assembly\Web | Web |
In der Route wird geprüft, ob es eine dem HTTP-Verb (Presenter::get(), Presenter::post(),
Presenter::put(), Presenter::post()) entsprechende Methode gibt. Ist dies nicht der Fall,
so wird die Methode Presenter::execute() aufgerufen.