Zum Inhalt springen

Perl Web Server Gateway Interface

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 18. November 2015 um 22:42 Uhr durch Flossenträger (Diskussion | Beiträge) (LA+). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Dieser Artikel wurde zur Löschung vorgeschlagen.

Falls du Autor des Artikels bist, lies dir bitte durch, was ein Löschantrag bedeutet, und entferne diesen Hinweis nicht.

Zur Löschdiskussion
Begründung: Relevanz nicht ausreichend dargestellt oder gar nicht vorhanden Wassertraeger  21:42, 18. Nov. 2015 (CET)

PSGI: Perl Web Server Gateway Interface
Basisdaten

Entwickler Tatsuhiko Miyagawa und andere
Aktuelle Version 1.102
Betriebssystem plattformunabhängig
Programmier­sprache Perl
Kategorie Middleware
Lizenz Creative Commons by-sa
Website

Das Perl Web Server Gateway Interface (PSGI) ist eine Schnittstelle zwischen Webservern und Webanwendungen.

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.

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;
};