NAME
Nginx::ReadBody::Russian - Русская документация к модулю Nginx::ReadBody для встроенного perl web-сервера nginx
Версия 0.07
SYNOPSIS
#nginx.conf (part of)
location /post_here {
error_page 345 = @get_there;
error_page 346 = @good_post;
error_page 347 = @bad_post;
if ($request_method != POST)
{ return 345; }
set $read_body_debug 1;
set $read_body_check 'My::Own::check_userdata';
set $read_body_done 346;
set $read_body_nodata 347;
set $read_body_false 347;
perl Nginx::ReadBody::read;
}
DESCRIPTION
В nginx нет средств, позволяющих принимать решения об обработке запроса на основании информации, содержащейся в его теле. Этот модуль добавляет такие средства.
Методы Nginx::ReadBody
read($request);-
Предназначен быть обработчиком того location, с телами запросов в который надо работать.
handler($request, $variableName, $defaultValue, $debug)-
Метод извлекает из внутренних структур модуля обработчик, соответствующий содержимому
$variableName. Если необходимо, обработчик сначала создается. Не используется, как обработчик location, но вызывается из таковых.Возвращает указатель на функцию, определенную в
$variableName(или$defaultValue).Функция создается на основе содержимого
$variableName(см. ниже) с помощьюeval, результат кешируется для повышения производительности.Параметры метода:
$request-
Обект запроса, предоставляемый nginx (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
$variableName-
Имя переменной, определенной в
nginx.confи содержащей описание функции-обработчика.Варианты описания функции:
- Числовой код
-
Превращается в ссылку на тривиальный метод, возвращающий этот код. Вот так:
$handler = eval "sub { return $variableValue; }"; - Имя функции
-
Например,
My::Own::method.Превращается в ссылку на указанную функцию. Вот так:
$handler = eval "\\&$variableValue"; - Описание функции perl
-
Примерно такое:
"sub {...}".Превращается в ссылку на скомпилированную описанную функцию. Вот так:
$handler = eval $variableValue;Я вообще не тестировал этот вариант! И сам я им пользоваться никогда не буду - содержимое
$variableNameС<eval>ится прямо во время выполнения, и к чему это может привести, если в нем будут ошибки - я не знаю.
Если содержимое
$variableNameне соответствет ни одному из трех вариантов, или если компиляция содержимого в ссылку на функцию по каким-либо причинам не удалась - возвращается ссылка на функцию, просто возвращающую код500. $defaultValue-
Этот параметр используется вместо содержимого переменной, имя которой указано в
$variableName, если она не определена или пределена как пустая строка. $debug-
Определяет уровень логирования. См. $read_body_debug.
variable($request, $variableName, $defaultValue, $debug)-
Умный - ну, не совсем тупой - извлекатель переменных, определенных в конфигурации
nginx. Не используется, как обработчик location, но вызывается из таковых.Параметры:
$request-
Обект запроса, предоставляемый nginx (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
$variableName-
Имя переменно, содержимое которой надо вернуть.
$defaultValue-
Значение, возвращаемое, если переменная не определена или определена как пустая строка. Может быть неопределенным (
undef).Если переменная не определена, а это значение определено - переменная устанавливливается в это значение. И, таким образом, становится определенной на протяжении последующей обработки запроса.
$debug-
Определяет уровень логирования. См. $read_body_debug.
Переменные конфигурационного файла nginx.conf, определяюще поведение модуля
$read_body_debug-
Определяет, должны ли отладочные сообщения быть записаны в error.log.
Возможные значения:
- Число
0или пустая строка -
Значение по умолчанию. Сообщения не записываются в error.log.
- Положительное число, например
1или непустая строка -
Отладочные сообщения записываются со всеми подробностями.
- Специальное значение
'0 but true'или отрицательное число -
Отладочные сообщения записываются, но некоторые подробности опускаются.
- Число
$read_body_nodata-
Ссодержит описание функции (см.
handler).Значение по умолчанию:
400.Обработчик
read()вызывает эту функцию, если переданный ему запрос не содержит тела.Функция вызывается с одним параметром: объектом запроса (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.
$read_body_check-
Содержит описание функции (см.
handler).Значение по умолчанию:
'0 but true'. Это означает, что, если эта переменная не определена, запрос будет направлен в функцию, определенную в$read_body_done.Функция вызывается сразу после получения тела запроса для его проверки.
Функция вызывается с одним параметром: объектом запроса (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
Вернуть фунция должна
TRUEилиFALSE(истинное или ложное значение). $read_body_done-
Содержит описание функции (см.
handler).Значение по умолчанию:
500. Это означает, что, если эта переменная не определена, клиенту уйдет код ошибки 500. Это чтобы администратор сразу заметил, что он забыл определить эту переменную.Запрос передается этой функции, если
$read_body_checkвернетTRUE.Функция вызывается с одним параметром: объектом запроса (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.
$read_body_false-
Содержит описание функции (см.
handler).Значение по умолчанию:
400.Запрос передается этой функции, если
$read_body_checkвернетFALSE.Функция вызывается с одним параметром: объектом запроса (см. http://wiki.nginx.org/NginxEmbeddedPerlModule).
Поведение функции должно быть таким, как если бы она предназначалась быть обработчиком location.
EXPORT
Не экспортирует ничего.
SEE ALSO
http://wiki.nginx.org/NginxEmbeddedPerlModule.
AUTHOR
Даниил Подольский, <tpaba@cpan.org>
COPYRIGHT AND LICENSE
Copyright (C) 2010 by Daniel Podolsky
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.