Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CGI::PSGI(3)	      User Contributed Perl Documentation	  CGI::PSGI(3)

NAME
       CGI::PSGI - Adapt CGI.pm	to the PSGI protocol

SYNOPSIS
	 use CGI::PSGI;

	 my $app = sub {
	     my	$env = shift;
	     my	$q = CGI::PSGI->new($env);
	     return [ $q->psgi_header, [ $body ] ];
	 };

DESCRIPTION
       This module is for web application framework developers who currently
       uses CGI	to handle query	parameters, and	would like for the frameworks
       to comply with the PSGI protocol.

       Only slight modifications should	be required if the framework is
       already collecting the body content to print to STDOUT at one place
       (rather using the print-as-you-go approach).

       On the other hand, if you are an	"end user" of CGI.pm and have a	CGI
       script that you want to run under PSGI web servers, this	module might
       not be what you want.  Take a look at CGI::Emulate::PSGI	instead.

       Your application, typically the web application framework adapter
       should update the code to do "CGI::PSGI->new($env)" instead of
       "CGI->new" to create a new CGI object. (This is similar to how
       CGI::Fast object	is initialized in a FastCGI environment.)

INTERFACES SUPPORTED
       Only the	object-oriented	interface of CGI.pm is supported through
       CGI::PSGI.  This	means you should always	create an object with
       "CGI::PSGI->new($env)" and should call methods on the object.

       The function-based interface like "use CGI ':standard'" does not	work
       with this module.

METHODS
       CGI::PSGI adds the following extra methods to CGI.pm:

   env
	 $env =	$cgi->env;

       Returns the PSGI	environment in a hash reference. This allows
       CGI.pm-based application	frameworks such	as CGI::Application to access
       PSGI extensions,	typically set by Plack Middleware components.

       So if you enable	Plack::Middleware::Session, your application and
       plugin developers can access the	session	via:

	 $cgi->env->{'plack.session'}->get("foo");

       Of course this should be	coded carefully	by checking the	existence of
       "env" method as well as the hash	key "plack.session".

   psgi_header
	my ($status_code, $headers_aref) = $cgi->psgi_header(%args);

       Works like CGI.pm's header(), but the return format is modified.	It
       returns an array	with the status	code and arrayref of header pairs that
       PSGI requires.

       If your application doesn't use "$cgi->header", you can ignore this
       method and generate the status code and headers arrayref	another	way.

   psgi_redirect
	my ($status_code, $headers_aref) = $cgi->psgi_redirect(%args);

       Works like CGI.pm's redirect(), but the return format is	modified. It
       returns an array	with the status	code and arrayref of header pairs that
       PSGI requires.

       If your application doesn't use "$cgi->redirect", you can ignore	this
       method and generate the status code and headers arrayref	another	way.

LIMITATIONS
       Do not use CGI::Pretty or something similar in your controller. The
       module messes up	CGI's DIY autoloader and breaks	CGI::PSGI (and
       potentially other) inheritance.

AUTHOR
       Tatsuhiko Miyagawa <miyagawa@bulknews.net>

       Mark Stosberg <mark@summersault.com>

LICENSE
       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

SEE ALSO
       CGI, CGI::Emulate::PSGI

perl v5.32.1			  2011-05-17			  CGI::PSGI(3)

NAME | SYNOPSIS | DESCRIPTION | INTERFACES SUPPORTED | METHODS | LIMITATIONS | AUTHOR | LICENSE | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=CGI::PSGI&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help