URL Routing und benutzerfreundliche URLs

Statische und dynamische Routen, Parameter und benutzerfreundliche URLs

Routingtable, URL und Klassenbindung

Auf der Basis Mod_Rewrite, was der Webserver unterstützen muss, wird jeder Request auf ein Perl-CGI-Script umgeleitet. Der angeforderte URL findet sich in der Serverumgebung in der Variablen REQUEST_URI, im Beispiel dieser Seite ist also $ENV{REQUEST_URI} = "/url.html". Sofern es für diesen URL /url.html einen Eintrag in der Routingtable gibt, wird die zum URL dazugehörige Perl-Klasse geladen, also diejenige Klasse die für das Ausliefern der Response und deren Inhalt zuständig ist. Hierzu muss die Routing-Table im Hauptspeicher liegen. Aufgrund der Klassenhierarchie kann es durchaus mehrere URLs geben die an ein und dieselbe Klasse gebunden sind und natürlich gibt es auch Klassen die nur für einen einzigen URL zuständig sind.

Parameter im Request

Die Routingtable vermittelt eine sogenannte statische Route. Das heißt, daß ein Request an /url.html zu genau derselben Klasse geroutet wird wie ein Request an /url.html?foo=bar. Ein an den URL angehängter QUERY_STRING beinhaltet Parameter als Name=Value, ebenso kann ein im Request gesendeter Message-Body (POST, PUT) Parameter enthalten. Ob es einen Message-Body gibt, das verrät die CGI-Umgebungs-Variable CONTENT_LENGTH. Der an den URL gebundene Klasse nun, kommt die Aufgabe zu, mit den Parametern im Request, was auch Cookies sein können, bestimmte Dinge zu tun. Beispielsweise die in ein Formular eingegebenen Daten zu verarbeiten oder über einen Cookie eine Session aufrechtzuerhalten und natürlich dem Benutzer eine Antwortseite auszuliefern.

Attribute class und Weitere

Während das class-Attribut die Bindung der URL an eine Klasse definiert, gibt es die Möglichkeit, weitere Attribute zu einem URL festzulegen. Beispielsweise einen Titel für die Seite und eine kurze Beschreibung sowie der Dateiname des zu verwendenden Templates sofern das Template aus einer Datei geladen werden soll. Per Default jedoch, wird das Template von der Perl-Klasse selbst bereitgestellt: Als text/plain oder text/html unterhalb des __DATA__ - Token in der zur Klasse gehörigen .pm-Datei. Wobei das Template für eine HTML-Seite nur den Inhalt für das BODY-Element bereitstellt, ggf. mit Platzhaltern (Strings, Listen und Tabellen) die vor dem Ausliefern der Response-Seite mit Werten befüllt und gerendert werden. Sämtliche Attribute zu einer Seite (class, title, descr, file, parent usw.) sind in der Routing-Table notiert.

Die Methoden der Response-Klasse

data
liefert das Template für den HTML-BODY, wird immer als erste Methode aufgerufen
browse
wird aufgerufen wenn der Request keine Parameter enthält
control
wird aufgerufen wenn der Request Parameter enthält
init
wird vor control/browse immer aufgerufen, egal ob der Request Parameter enthält oder nicht
trailer
wie init, nur als Letzte aller Methoden, also nach control/browse

Der Klasse steht es frei, obenstehende Methoden zu definieren, das heißt, daß diese Methoden aufgerufen werden wenn sie definiert sind, ansonsten nicht. Eine Klasse die keine Parameter zu verarbeiten hat, braucht demnach keine control-Methode.


Datenschutzerklärung: Diese Seite dient rein privaten Zwecken. Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. s​os­@rolf­rost.de. Entity: 3824d7a6908fc0ff7d27fdda249b486f