Das Perl Web Server Gateway Interface (PSGI) ist eine Schnittstelle zwischen Webservern und Webanwendungen.
PSGI: Perl Web Server Gateway Interface | |
---|---|
Basisdaten
| |
Entwickler | Tatsuhiko Miyagawa und andere |
Aktuelle Version | 1.102 |
Betriebssystem | plattformunabhängig |
Programmiersprache | Perl |
Kategorie | Middleware |
Lizenz | Creative Commons by-sa |
Website |
Inspiriert vom 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.
Jede PSGI-Applikation erhält beim Aufruf eine Referenz auf einen Hash (mit Umgebungsvariablen ähnlich wie beim CGI) und gibt eine Referenz auf einen Array mit drei Elementen (mit Statuscode etc.) zurück.
Ein PSGI-Server ist ein Perl-Programm, welches es ermöglicht, eine PSGI-Applikation auszuführen. Es ist dabei meistens
- Teil eines Webservers (wie mod_perl der Apache Software Foundation),
- verbunden mit einem Webserver (via FastCGI),
- ein von einem Webserver aufgerufenes Programm (wie ein einfaches CGI-Skript) oder
- selber ein Webserver.
PSGI-Server werden oft auch in Anlehnung an Java Servlets PSGI Application Container genannt.
Viele Web-Frameworks verwenden PSGI (zusammen mit der Middleware Plack), wie zum Beispiel Catalyst (BBC iPlayer)[1], Mason (Amazon.com, Delicious, Hearst Magazines, DynDNS)[2], Dancer und viele mehr.
Beispiel
Das folgende einfache Beispiel fügt jeder PSGI-Anwendung das HTTP-Header-Feld X-Hello-World hinzu (und gibt den Inhalt Hello World zurück and 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;
};
Einzelnachweise
Weblinks
- Website (auf CPAN, engl., abgerufen im November 2015)
- Johnson, Lee: Documentation for alternative solutions to CGI.pm (auf CPAN, engl., abgerufen im November 2015)
- Miyagawa, Tatsuhiko: Vortrag (Slides) auf der O'Reilly OSCON im Juli 2010 (engl., abgerufen im November 2015)
- PSGI/Plack, Superglue interface between perl web application frameworks and web servers, just like Perl is the duct tape of the internet. (engl., abgerufen im November 2015)