Perl Web Server Gateway-interface

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken
PSGI: Perl Web Server Gateway-interface
Basis data

ontwikkelaar Tatsuhiko Miyagawa en anderen
Huidige versie 1.102
besturingssysteem platformonafhankelijk
programmeertaal Parel
categorie Middleware
Licentie Creative Commons door-sa
PSGI op metacpan.org

De Perl Web Server Gateway Interface ( PSGI ) is een interface tussen webservers en webapplicaties .

Geïnspireerd door Python's WSGI en Ruby's Rack , werd het ontwikkeld om platformonafhankelijkheid voor webapplicaties te bevorderen en het maken ervan te vereenvoudigen. Het is een soort opvolger van de CGI- module, die sinds Perl 5.22 niet meer in het kernpakket zit.

PSGI-servers worden vaak PSGI-toepassingscontainers genoemd op basis van Java-servlets .

Verschillen met de CGI

Bij standaard CGI worden de gegevens (zoals uit webformulieren ) van de webserver (bijvoorbeeld Apache ) via omgevingsvariabelen naar de Perl-interpreter gestuurd, die steeds opnieuw een nieuw proces moet starten. Met PSGI krijgt elke toepassing een verwijzing naar een hash wanneer deze wordt aangeroepen (met variabelen die vergelijkbaar zijn met de CGI). De webserver zelf is ofwel

  • uw eigen volledige Perl-webserver (zoals Starman , plackup , enz.),
  • een Perl- daemon die wordt aangeroepen door een webserver (zoals FastCGI ) of
  • een Perl-proces ingebed in de webserver (zoals mod_perl ).

CGI verwacht ook dat de applicaties HTTP-headers en de daadwerkelijke inhoud naar STDOUT schrijven . PSGI verwacht een array met drie elementen van de applicaties, die ook de statuscode bevatten.

PSGI is echter bewust opgezet vergelijkbaar met CGI om overstappen naar en blijvend gebruik van CGI-applicaties mogelijk te maken.

gebruik maken van

Veel webframeworks gebruiken PSGI, zoals Catalyst ( BBC iPlayer) [1] , Mason / Poet ( Amazon.com , Delicious , Hearst Magazines , DynDNS) [2] , Dancer en nog veel meer.

voorbeeld

Het volgende eenvoudige voorbeeld voegt het HTTP-headerveld X-Hello-World toe aan elke PSGI-toepassing (en retourneert de inhoud Hello World naar de client).

 # $ app is een eenvoudige PSGI-applicatie
mijn $ app = sub {
    mijn $ env = shift ;
    terug [ '200' ,
             [ 'Content-Type' => 'tekst / gewoon' ],
             [ "Hallo wereld" ] ];
};
 
# $ xheader is een stukje zogenaamde middleware rond $ app
mijn $ xheader = sub {
    mijn $ env = shift ;
    mijn $ res = $ app -> ( $ env );
    druk op @ { $ res -> [ 1 ]}, 'X-Hello-World' => 1 ;
    retourneer $ res ;
};

Individueel bewijs

  1. Catalyst- sites (toegankelijk in november 2015)
  2. Mason- sites (toegankelijk november 2015)

web links