Compiler-Parser
view release on metacpan or search on metacpan
t/app/Plack/Request.t view on Meta::CPAN
=head1 CAVEAT
Note that this module is intended to be used by Plack middleware
developers and web application framework developers rather than
application developers (end users).
Writing your web application directly using Plack::Request is
certainly possible but not recommended: it's like doing so with
mod_perl's Apache::Request: yet too low level.
If you're writing a web application, not a framework, then you're
encouraged to use one of the web application frameworks that support PSGI (L<http://plackperl.org/#frameworks>),
or see modules like L<HTTP::Engine> to provide higher level
Request and Response API on top of PSGI.
=head1 METHODS
Some of the methods defined in the earlier versions are deprecated in
version 0.99. Take a look at L</"INCOMPATIBILITIES">.
Unless otherwise noted, all methods and attributes are B<read-only>,
and passing values to the method like an accessor doesn't work like
you expect it to.
=head2 new
Plack::Request->new( $env );
Creates a new request object.
=head1 ATTRIBUTES
=over 4
=item env
Returns the shared PSGI environment hash reference. This is a
reference, so writing to this environment passes through during the
whole PSGI request/response cycle.
=item address
Returns the IP address of the client (C<REMOTE_ADDR>).
=item remote_host
Returns the remote host (C<REMOTE_HOST>) of the client. It may be
empty, in which case you have to get the IP address using C<address>
method and resolve on your own.
=item method
Contains the request method (C<GET>, C<POST>, C<HEAD>, etc).
=item protocol
Returns the protocol (HTTP/1.0 or HTTP/1.1) used for the current request.
=item request_uri
Returns the raw, undecoded request URI path. You probably do B<NOT>
want to use this to dispatch requests.
=item path_info
Returns B<PATH_INFO> in the environment. Use this to get the local
path for the requests.
=item path
Similar to C<path_info> but returns C</> in case it is empty. In other
words, it returns the virtual path of the request URI after C<<
$req->base >>. See L</"DISPATCHING"> for details.
=item script_name
Returns B<SCRIPT_NAME> in the environment. This is the absolute path
where your application is hosted.
=item scheme
Returns the scheme (C<http> or C<https>) of the request.
=item secure
Returns true or false, indicating whether the connection is secure (https).
=item body, input
Returns C<psgi.input> handle.
=item session
Returns (optional) C<psgix.session> hash. When it exists, you can
retrieve and store per-session data from and to this hash.
=item session_options
Returns (optional) C<psgix.session.options> hash.
=item logger
Returns (optional) C<psgix.logger> code reference. When it exists,
your application is supposed to send the log message to this logger,
using:
$req->logger->({ level => 'debug', message => "This is a debug message" });
=item cookies
Returns a reference to a hash containing the cookies. Values are
strings that are sent by clients and are URI decoded.
If there are multiple cookies with the same name in the request, this
method will ignore the duplicates and return only the first value. If
that causes issues for you, you may have to use modules like
CGI::Simple::Cookie to parse C<$request->header('Cookies')> by
yourself.
=item query_parameters
Returns a reference to a hash containing query string (GET)
parameters. This hash reference is L<Hash::MultiValue> object.
=item body_parameters
Returns a reference to a hash containing posted parameters in the
request body (POST). As with C<query_parameters>, the hash
reference is a L<Hash::MultiValue> object.
=item parameters
Returns a L<Hash::MultiValue> hash reference containing (merged) GET
and POST parameters.
=item content, raw_body
Returns the request content in an undecoded byte string for POST requests.
=item uri
Returns an URI object for the current request. The URI is constructed
using various environment values such as C<SCRIPT_NAME>, C<PATH_INFO>,
C<QUERY_STRING>, C<HTTP_HOST>, C<SERVER_NAME> and C<SERVER_PORT>.
Every time this method is called it returns a new, cloned URI object.
=item base
Returns an URI object for the base path of current request. This is
like C<uri> but only contains up to C<SCRIPT_NAME> where your
application is hosted at.
Every time this method is called it returns a new, cloned URI object.
=item user
Returns C<REMOTE_USER> if it's set.
=item headers
Returns an L<HTTP::Headers> object containing the headers for the current request.
=item uploads
Returns a reference to a hash containing uploads. The hash reference
is a L<Hash::MultiValue> object and values are L<Plack::Request::Upload>
objects.
=item content_encoding
Shortcut to $req->headers->content_encoding.
=item content_length
Shortcut to $req->headers->content_length.
=item content_type
Shortcut to $req->headers->content_type.
=item header
Shortcut to $req->headers->header.
=item referer
Shortcut to $req->headers->referer.
=item user_agent
Shortcut to $req->headers->user_agent.
=item param
Returns GET and POST parameters with a CGI.pm-compatible param
method. This is an alternative method for accessing parameters in
$req->parameters. Unlike CGI.pm, it does I<not> allow
( run in 1.130 second using v1.01-cache-2.11-cpan-df04353d9ac )