Краткое описание модуля Apache::Request. Документация

  1. Apache::Request
  2. Методы Apache::Request
  3. Пример использования Apache::Request
  4. Полезные ссылки


Apache::Request

При работе с mod_perl, можно использовать объект Apache::Request. Apache::Request позволяет получить доступ к данным клиентского запроса. Содержит методы для парсинга запросов GET и POST, Content-type которых имеет значение application/x-www-form-urlencoded или multipart/form-data.

Apache::Request — это более быстрая и легкая альтернатива использованию модуля CGI.pm. Названия методов Apache::Request и принципы их использования аналогичны методам CGI.pm .

Для работы Apache::Request использует библиотеку libapreq.
libapreq — это библиотека, которая предоставляет возможности управления данными клиентского запроса, посредством Apache API.

Функциональность библиотеки:

  • парсинг данных application/x-www-form-urlencoded
  • парсинг multipart/form-data
  • парсинг HTTP cookies

Кроме Apache::Request, библиотека libapreq используется Apache::Cookie,
для работы с cookies, как альтернатива модулю CGI::Cookie. libapreq написана на C.

Методы Apache::Request

new

Создает новый объект Apache::Request.

При создании объекта можно задавать дополнительные параметры:

  • POST_MAX — Устанавливает ограничение на размер данных, передаваемых методом POST. В байтах. Если лимит будет превышен, при вызове метода parse() будет возвращена ошибка.
  • DISABLE_UPLOADS — Запрещает загрузку файлов. Метод parse() вернет ошибку, если в запросе будет предпринята попытка загрузить файл.
  • TEMP_DIR — Назначает каталог для загрузки файлов.

  • HOOK_DATA
  • UPLOAD_HOOK

instance

Если, в рамках работы с одним запросом, делается попытка создать два и более объектов
Apache::Request, через вызов метода new,
то будет обнаружено, что параметры отправленной формы будет содержать только первый объект.
Второй и последующий объекты этих параметров содержать не будут.

Использование метода instance() решает данную проблему. Метод

instance() позволяет Apache::Request
существовать в единственном числе (паттерн Singleton).

Благодаря этой схеме, объект Apache::Request с некоторыми данными создается только один раз.
При попытке повторного создания объекта, возвращается ранее созданный экземпляр.

При вызове instance() можно применять все дополнительные параметры,
которые доступны для метода new(). Поскольку объект фактически создается один раз, при повторных вызовах instance() использование параметров бессмысленно, они учитываются только при создании объекта.

Не желательно использование метода parse() одновременно с instance().
Это может привести к ошибкам.

parse

Метод parse обеспечивает парсинг запроса. Обычно, по мере необходимости, данный метод неявно вызывается другими методами, и нет необходимости прописывать parse дополнительно, в коде программы. Однако, его удобно использовать для вывода ошибок:

param

Метод param() используется для получения параметров запроса, или их установки. В отличие от CGI.pm, метод param() Apache::Request работает очень быстро. По скорости выполнения, метод даже превосходит метод Apache->args mod_perl.

Синтаксически, использование метода param от Apache::Request практически не отличается от метода param модуля CGI.pm .

upload

Возвращает единственный объект Apache::Upload в скалярном контексте,
или все объекты Apache::Upload в контексте списка.

Модуль Apache::Upload предоставляет методы для работы с загружаемыми файлами.

Пример использования Apache::Request

Полезные ссылки

HTTP Request Library
libapreq2 Documentation
Apache::Request, Apache::Upload
Apache2::Upload

http://perl.apache.org/docs/1.0/guide/modules.html#Apache__Request__libapreq____Generic_Apache_Request_Library