Perl Web Server Gateway Interface

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 20. November 2015 um 21:06 Uhr durch Fernsehfan2014 (Diskussion | Beiträge) (Klammern korrigiert | Klammerfehler - Helfer gesucht). 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)

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
Programmier­sprache 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

  1. Catalyst Sites (abgerufen im November 2015)
  2. Mason Sites (abgerufen im November 2015)
  • 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)