Provided by: libmojolicious-perl_7.59+dfsg-1ubuntu1_all bug

NAME

       Mojo::Message::Request - HTTP request

SYNOPSIS

         use Mojo::Message::Request;

         # Parse
         my $req = Mojo::Message::Request->new;
         $req->parse("GET /foo HTTP/1.0\x0d\x0a");
         $req->parse("Content-Length: 12\x0d\x0a");
         $req->parse("Content-Type: text/plain\x0d\x0a\x0d\x0a");
         $req->parse('Hello World!');
         say $req->method;
         say $req->headers->content_type;
         say $req->body;

         # Build
         my $req = Mojo::Message::Request->new;
         $req->url->parse('http://127.0.0.1/foo/bar');
         $req->method('GET');
         say $req->to_string;

DESCRIPTION

       Mojo::Message::Request is a container for HTTP requests, based on RFC 7230
       <http://tools.ietf.org/html/rfc7230>, RFC 7231 <http://tools.ietf.org/html/rfc7231>, RFC
       7235 <http://tools.ietf.org/html/rfc7235> and RFC 2817
       <http://tools.ietf.org/html/rfc2817>.

EVENTS

       Mojo::Message::Request inherits all events from Mojo::Message.

ATTRIBUTES

       Mojo::Message::Request inherits all attributes from Mojo::Message and implements the
       following new ones.

   env
         my $env = $req->env;
         $req    = $req->env({PATH_INFO => '/'});

       Direct access to the "CGI" or "PSGI" environment hash if available.

         # Check CGI version
         my $version = $req->env->{GATEWAY_INTERFACE};

         # Check PSGI version
         my $version = $req->env->{'psgi.version'};

   method
         my $method = $req->method;
         $req       = $req->method('POST');

       HTTP request method, defaults to "GET".

   proxy
         my $url = $req->proxy;
         $req    = $req->proxy(Mojo::URL->new('http://127.0.0.1:3000'));

       Proxy URL for request.

   reverse_proxy
         my $bool = $req->reverse_proxy;
         $req     = $req->reverse_proxy($bool);

       Request has been performed through a reverse proxy.

   url
         my $url = $req->url;
         $req    = $req->url(Mojo::URL->new);

       HTTP request URL, defaults to a Mojo::URL object.

         # Get request information
         my $info = $req->url->to_abs->userinfo;
         my $host = $req->url->to_abs->host;
         my $path = $req->url->to_abs->path;

   via_proxy
         my $bool = $req->via_proxy;
         $req     = $req->via_proxy($bool);

       Request can be performed through a proxy server.

METHODS

       Mojo::Message::Request inherits all methods from Mojo::Message and implements the
       following new ones.

   clone
         my $clone = $req->clone;

       Return a new Mojo::Message::Request object cloned from this request if possible, otherwise
       return "undef".

   cookies
         my $cookies = $req->cookies;
         $req        = $req->cookies(Mojo::Cookie::Request->new);
         $req        = $req->cookies({name => 'foo', value => 'bar'});

       Access request cookies, usually Mojo::Cookie::Request objects.

         # Names of all cookies
         say $_->name for @{$req->cookies};

   every_param
         my $values = $req->every_param('foo');

       Similar to "param", but returns all values sharing the same name as an array reference.

         # Get first value
         say $req->every_param('foo')->[0];

   extract_start_line
         my $bool = $req->extract_start_line(\$str);

       Extract request-line from string.

   fix_headers
         $req = $req->fix_headers;

       Make sure request has all required headers.

   get_start_line_chunk
         my $bytes = $req->get_start_line_chunk($offset);

       Get a chunk of request-line data starting from a specific position. Note that this method
       finalizes the request.

   is_handshake
         my $bool = $req->is_handshake;

       Check "Upgrade" header for "websocket" value.

   is_secure
         my $bool = $req->is_secure;

       Check if connection is secure.

   is_xhr
         my $bool = $req->is_xhr;

       Check "X-Requested-With" header for "XMLHttpRequest" value.

   param
         my $value = $req->param('foo');

       Access "GET" and "POST" parameters extracted from the query string and
       "application/x-www-form-urlencoded" or "multipart/form-data" message body. If there are
       multiple values sharing the same name, and you want to access more than just the last one,
       you can use "every_param". Note that this method caches all data, so it should not be
       called before the entire request body has been received. Parts of the request body need to
       be loaded into memory to parse "POST" parameters, so you have to make sure it is not
       excessively large.  There's a 16MiB limit for requests by default.

   params
         my $params = $req->params;

       All "GET" and "POST" parameters extracted from the query string and
       "application/x-www-form-urlencoded" or "multipart/form-data" message body, usually a
       Mojo::Parameters object. Note that this method caches all data, so it should not be called
       before the entire request body has been received. Parts of the request body need to be
       loaded into memory to parse "POST" parameters, so you have to make sure it is not
       excessively large. There's a 16MiB limit for requests by default.

         # Get parameter names and values
         my $hash = $req->params->to_hash;

   parse
         $req = $req->parse('GET /foo/bar HTTP/1.1');
         $req = $req->parse({PATH_INFO => '/'});

       Parse HTTP request chunks or environment hash.

   query_params
         my $params = $req->query_params;

       All "GET" parameters, usually a Mojo::Parameters object.

         # Turn GET parameters to hash and extract value
         say $req->query_params->to_hash->{foo};

   start_line_size
         my $size = $req->start_line_size;

       Size of the request-line in bytes. Note that this method finalizes the request.

SEE ALSO

       Mojolicious, Mojolicious::Guides, <http://mojolicious.org>.