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/rfc7235>, RFC 7231
<
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({});
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".
url¶
my $url = $req->url;
$req = $req->url(Mojo::URL->new);
HTTP request URL, defaults to a Mojo::URL object.
# Get request information
say $req->url->to_abs->userinfo;
say $req->url->to_abs->host;
say $req->url->to_abs->path;
reverse_proxy¶
my $bool = $req->reverse_proxy;
$req = $req->reverse_proxy($bool);
Request has been performed through a reverse proxy.
METHODS¶
Mojo::Message::Request inherits all methods from Mojo::Message and implements
the following new ones.
clone¶
my $clone = $req->clone;
Clone 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.
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];
my $bool = $req->extract_start_line(\$str);
Extract request line from string.
$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.
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 @names = $req->param;
my $value = $req->param('foo');
my ($foo, $bar) = $req->param(['foo', 'bar']);
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
10MB limit 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 10MB limit by
default.
# Get parameter value
say $req->params->param('foo');
parse¶
$req = $req->parse('GET /foo/bar HTTP/1.1');
$req = $req->parse(REQUEST_METHOD => 'GET');
$req = $req->parse({REQUEST_METHOD => 'GET'});
Parse HTTP request chunks or environment hash.
proxy¶
my $proxy = $req->proxy;
$req = $req->proxy('http://foo:bar@127.0.0.1:3000');
$req = $req->proxy(Mojo::URL->new('http://127.0.0.1:3000'));
Proxy URL for request.
# Disable proxy
$req->proxy(0);
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};
SEE ALSO¶
Mojolicious, Mojolicious::Guides, <
http://mojolicio.us>.