webapp Framework

Die App Engine inkludiert ein simples Web Applikation Framework namens webapp. Webapp ist ein WSGI (Web Server Gateway Interface) kompatibles Framework. WSGI selbst ist eine Weiterentwicklung von CGI. Es wird jedes Framework unterstützt welches in reinem Python Code geschrieben ist und CGI verarbeiten kann. Das webapp Framework ist als Standard in der App Engine Umgebung installiert. Möchte man ein anderes Framework oder vielleicht sogar ein eigenes nutzen werden die dazugehörigen Dateien mit der Applikation zusammen hochgeladen.

Eine webapp Applikation hat eine bestimmte Struktur. Diese besteht aus drei verschiedenen Teilen. Zum einen existieren ein oder mehrere Request Handler die auf ankommende Requests reagieren und ein Response aufbereiten und zurückgeben. Zusätzlich eine WSGIApplikations Instanz welche die ankommenden Requests den Handlern aufgrund der URL zuordnet. Als letztes noch die __main__ Routine welche die WSGIApplikation als CGI Adapter nutzt. Am Ende die Python übliche Nutzung um die __main__ Routine zu starten.

Einen Request Handler definiert man als Klassen-Objekt und leitet es von der Klasse webapp.RequestHandler ab.
Die Methode get(self) nimmt die entsprechenden GET Requests entgegen wobei die Methode post(self) die POST Requests verarbeitet.

Innerhalb des Request Handlers wird wie gewohnt innerhalb eines Klassen-Objekts mit self referenziert. Hauptsächlich wird man die vom webapp Framework zur Verfügung gestellten Objekte Request und Response nutzen, um zum einen Daten zu empfangen, sie zu verarbeiten und mit dem Response-Objekt an den Browser zurück senden.

Mit self.request erhalten wir eine Instanz des Request-Objekts ohne es seperant instanzieren zu müssen, gleiches passiert beim Response-Objekt mit self.response.
Daten die über das Request-Objekt erhalten werden stammen dann von Parametern die über die URL oder durch Formularfeldern gesendet wurden, dass ist dann davon abhängig in welcher Methode auf die Daten zugegriffen wird.

Request Handling
Eine Instanz der Request Klasse beinhaltet Informationen über den eingenden Request. Typischerweise instanziert die WSGIApplikation ein Request Handler und initialisiert ihn mit einem Request Objekt publiziert mit einem WSGI kompatiblem Umgebungs Lexikon.

Die Request Klasse ist eine Kindklasse von der WebOb Request Klasse.

Response Handling
Das webapp-Framework sendet den Response an den Browser wenn der Request Handler beendet ist.

Der Inhalt des Response wird über die Ausführzeit des Request Handlers gepuffert und am Ende ausgegeben.

out stellt eine Instanz der StringIO Klasse dar.

Schreibe einen Kommentar