Catalyst::Request


Catalyst::Request - предоставляет информацию о текущем клиентском запросе


См также Catalyst::Request::Upload.

Catalyst Request класс, который предоставляет интерфейс к данным для текущего клиентского запроса. Объект запроса подготавливается Catalyst::Engine, таким образом скрывая детали особой реализации движка.

МЕТОДЫ

$req->address
Возвращает IP клиента.
$req->arguments
Возвращает ссылку на массив с аргументами

print $c->request->arguments->[0];

Для примера, если ваше действие было:

package MyApp::Controller::Foo;

sub moose : Local {
...
}

и URI запроса было "http://.../foo/moose/bah", строка "bah" будет первым и единственным аргументом.
Аргументы получаются URI преобразованными для вас.

$req->args
Сокращенно для "arguments".

$req->base
Содержит URI основу.
Contains the URI base. Всегда будет прицеплятся слешем. Помни, что URI схема (наприм, http vs. https) должна быть определена через эвристически; зависит от конфигурации сервера, она может быть неверна. См $req->secure для доп. информации.

Если ваше приложение было запрошено через URI "http://localhost:3000/some/path" то "base" есть "http://localhost:3000/".

$req->body
Возвращает тело сообщения запроса, как возвращенный HTTP::Body: строка, если не Content-Type определена как "application/x-www-form-urlencoded",
"text/xml", или "multipart/form-data", в этом случае File::Temp объект вернет.

$req->body_parameters
Возвращает ссылку на хеш содержащий POST параметры тела. Значения могут быть либо скаляр либо ссылка на массив, содержащий скаляр.

print $c->request->body_parameters->{field};
print $c->request->body_parameters->{field}->[0];

Это параметры из POST части запроса, если это имеет место.

$req->body_params
Сокр. body_parameters.

$req->content_encoding
Сокр. $req->headers->content_encoding. 
 
$req->content_length
Сокр. $req->headers->content_length.

$req->content_type
Сокр. $req->headers->content_type.

$req->cookie
Удобный метод для доступа к $req->cookies.

$cookie = $c->request->cookie('name');
@cookies = $c->request->cookie;

$req->cookies
Возвращает ссылку на хеш содержащий, куки.

print $c->request->cookies->{mycookie}->value;

Куки в хеше индексированы по имени, и значения есть CGI::Simple::Cookie объекты.

$req->header
Сокр. $req->headers->header.

$req->headers
Возвращает HTTP::Headers объект содержащий заголовки для текущего запроса.

print $c->request->headers->header('X-Catalyst');

$req->hostname
Возвращает хостнейм клиента. Используйте "$req->uri->host" чтобы получить хостнейм сервера.

$req->input
Синоним для $req->body.

$req->query_keywords
Содержит порцию ключевых слов строки запроса, когда нет присутствует знак "=".

http://localhost/path?some+keywords

$c->request->query_keywords будет содержать 'some keywords'

$req->match
Это содержит часть совпадений Regex действия. Иначе возвратит то же самое как "action", за исключением действий по умолчанию, которые возвращают пустую строку.

$req->method
Содержит метод ("GET", "POST", "HEAD", etc).

$req->param
Возвращает GET или POST параметры с CGI.pm совместимыми методами параметров. Это альтернативный метод для доступа параметров в
$c->req->parameters.

$value = $c->request->param( 'foo' );
@values = $c->request->param( 'foo' );
@params = $c->request->param;

Как CGI или различный в ранней версии Catalyst, пересылка множественных аргументов в этом метода, наподобии этого:

$c->request->param( 'foo', 'bar', 'gorch', 'quxx' );

установит параметр "foo" в множественные значения "bar", "gorch" и "quxx". Ранее это нужно было добавить "bar" как другое значение "foo" (создает его если не существовал до этого), "quxx" и другое значение для "gorch".

ПРИМЕЧАНИЕ: это рассмотрели традиционный интерфейс и следует быть внимательным, когда используете его, "scalar $c->req->param( 'foo' )" возвратит только первый параметр.
"foo" параметр даже в множественных представлениях;
"$c->req->param( 'foo' )" возвратит список параметров, которые могут неожиданно результат когда пишется код формы;

$foo->bar(
a => 'b',
baz => $c->req->param( 'baz' ),
);

Если множество "baz" параметров были представлены этим кодом может разрушить данные и стать причиной вызова ошибки инициализации. Для более прямого интерфейса
see "$c->req->parameters".

$req->parameters
Возвращает ссылку на хеш, содержащий GET и POST параметры. Значения могут быть скаляр или ссылка на массик скаляров.

print $c->request->parameters->{field};
print $c->request->parameters->{field}->[0];

Это комбинация "query_parameters" и "body_parameters".

$req->params
Сокр $req->parameters.

$req->path
Возвратит путь, т.е часть URI после $req->base, для текущего запроса

http://localhost/path/foo

$c->request->path будет содержать 'path/foo'

$req->path_info
Синоним path, добавлен для совместимости с CGI.

$req->protocol
Возвращает протокол (HTTP/1.0 or HTTP/1.1) используемый для текущего запроса.

$req->query_parameters
$req->query_params
Возвращает ссылку на хэш содержащий строку запроса (GET) параметров. Значения могут быть скаляр или ссылка на массив скаляров.

print $c->request->query_parameters->{field};
print $c->request->query_parameters->{field}->[0];

$req->read( [$maxlength] )
Читает участок данных из тела запроса. Этот метод предназначен для использования пока ищется читается $maxlength байты при каждом вызове.
$maxlength размер запроса, если не установлен иначе.

$req->read_chunk(\$buff, $max)
Читает участок...

Вам нужно установит MyApp->config(parse_on_demand => 1) чтобы использовать напрямую.

$req->referer
Сокр. $req->headers->referer. Возвратит ссылку реферал.

$req->secure
Возвратит истина или ложь, показывающий используется ли безопасное соединение(https). Помните что URI схема (прим. http и https) должны быть назначены эвристически, и поэтому надежность $req->secure будет зависеть от вашей конфигурации сервера. Если вы защищаете надежные страницы по стандарту SSL порт (443) и/или настройки HTTPS переменной окружения, $req->secure следует быть допустимой.

$req->captures
Возвращает ссылку на массив, содержащий захваченные аргументы из сцепленных действий или рег.выражений.

my @captures = @{ $c->request->captures }; 
 
$req->upload
Удобный метод для доступа $req->uploads.

$upload = $c->request->upload('field');
@uploads = $c->request->upload('field');

@fields = $c->request->upload;

for my $upload ( $c->request->upload('field') ) {
print $upload->filename;
}

$req->uploads
Возвращает ссылку на хэш, содержащий аплоды. Значения могут быть и Catalyst::Request::Upload объектt, или ссылка на массиви Catalyst::Request::Upload объектов.

my $upload = $c->request->uploads->{field};
my $upload = $c->request->uploads->{field}->[0];

$req->uri
Возвращает URI объект для текущего действия. Ссылаяс на URI текст.

$req->mangle_params( { key => 'value' }, $appendmode);
Возвращает ссылку на хеш морфологических параметров из текущих параметров запроса, плюс поданные параметры. Ключи для которых нет текущего существует параметра будут добавлены, ключи с неопределенными значениями будут удалены и ключи с существующими параметрами будут заменены. Помни, что вы можете подать истинное значение как конечный аргумент для изменения поведения с заботой о существующих параметров, добавление значений предпочтительнее чем их замена.
Быстрый пример:

# URI запрос парамет foo=1
my $hashref = $req->mangle_params({ foo => 2 });
# Результат параметр запроса foo=2

сравните с режимом добавления:

# URI foo=1
my $hashref = $req->mangle_params({ foo => 2 }, 1);
# Result foo=1&foo=2

Этот код после "uri_with".

$req->uri_with( { key => 'value' } );
Возвращает переписанный URI объект для текущего запроса. Ключ/значение пары проходят перезаписывают существующие параметры. Вы можете удалить существующий параметр передав ему undef значение. Немодифицированные параметры, будут зафиксированны.
Вы можете также передать дополнительный парамет который добавит "uri_with" в режим добавления:

$req->uri_with( { key => 'value' }, { mode => 'append' } );

См "mangle_params" для пояснения этого поведения.

$req->remote_user
Возвращает значение "REMOTE_USER" переменной окружения.

$req->user_agent
Сокр. $req->headers->user_agent. Возвращает строку версии браузера.

 

МЕТОДЫ УСТАНОВКИ


Вам никогда не следует вызывать эти методы самому в коде приложении, хотя они полезны если увеличивают Catalyst применяя роль запроса.

$self->prepare_headers()
Устанавливает "$res->headers" доступ.

$self->prepare_body()
Устанавливает тело используя HTTP::Body

$self->prepare_body_chunk()
Добавляет участок тело запроса.

$self->prepare_body_parameters()
Устанавливает параметры из тела.

$self->prepare_cookies()
Разбирает куки из заголовка. Устанавливает CGI::Simple::Cookie объект.

$self->prepare_connection()
Устанавливает различные поля в запросе такие как локальные и удаленный адреса, метод запроса, хостнейм и т.д.

$self->prepare_parameters()
Гарантирует, что тело будет разпарсено, затем построит параметры, которые комбинируются из тех в запрос и те в тело.
Этот метод - строитель для параметров атрибута.

meta
Предоставлен Moose