Perl Web Server Gateway Interface
Das Perl Web Server Gateway Interface (PSGI) ist eine Schnittstelle zwischen Webservern und in Perl geschriebenen Webanwendungen. Inspiriert von Pythons WSGI und Rubys Rack wurde es entwickelt, um die Plattformunabhängigkeit von Webanwendungen zu fördern und deren Erstellung zu vereinfachen. Es ist eine Art Nachfolger des CGI-Moduls, das seit Perl 5.22 nicht mehr im Core-Paket enthalten ist. PSGI-Server werden oft auch in Anlehnung an Java Servlets PSGI Application Container genannt. Unterschiede zum CGIBeim Standard-CGI werden die Daten (z. B. aus Webformularen) vom Webserver (z. B. Apache) via Umgebungsvariablen an den Perl-Interpreter übermittelt, der dafür immer wieder in einem neuen Prozess starten muss. Bei PSGI dagegen erhält jede Anwendung beim Aufruf eine Referenz auf einen Hashwert (mit Variablen ähnlich wie bei CGI). Dabei ist der Webserver selbst entweder
CGI erwartet von den Applikationen, dass diese die HTTP-Header und den eigentlichen Inhalt nach STDOUT schreiben. Dagegen erwartet PSGI von den Anwendungen ein Array mit drei Elementen, die u. a. den HTTP-Statuscode enthalten. PSGI wurde bewusst ähnlich wie CGI aufgebaut, um einen Umstieg und eine Weiterverwendung von CGI-Anwendungen zu ermöglichen. VerwendungViele Perl-Web-Frameworks verwenden PSGI, z. B.
BeispielDas folgende Beispiel fügt jeder PSGI-Anwendung das HTTP-Header-Feld X-Hello-World hinzu (und gibt den Inhalt Hello World zurück an den Client). # $app ist eine einfache PSGI-Anwendung
my $app = sub {
my $env = shift;
return [ '200',
[ 'Content-Type' => 'text/plain' ],
[ "Hello World" ] ];
};
# $xheader ist ein Stück sogenannte Middleware um $app herum
my $xheader = sub {
my $env = shift;
my $res = $app->($env);
push @{$res->[1]}, 'X-Hello-World' => 1;
return $res;
};
EinzelnachweiseWeblinks
|
Portal di Ensiklopedia Dunia