Perl Web Server Gateway-interface
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
web links
- PSGI op meta cpan .org (Engels)
- Johnson, Lee: Documentatie voor alternatieve oplossingen voor CGI.pm (op CPAN, geraadpleegd in november 2015)
- Miyagawa, Tatsuhiko: Lezing (dia's) op de O'Reilly OSCON in juli 2010 (Engels, toegankelijk in november 2015)
- PSGI / Plack , Superglue-interface tussen perl-webapplicatieframeworks en webservers, net zoals Perl de ducttape van het internet is. (Engels, geraadpleegd november 2015)