Zum Inhalt

Ü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.