HTTP-парсер

Для первичной обработки запроса используется HTTP-парсер, который вызывается неявно. Его название не требуется указывать в point'е при использовании фильтров, которые он предоставляет.

HTTP-парсер строит на основе базового запроса сложную структуру данных, к элементам которой можно обращаться при помощи следующих фильтров:

Использование фильтров в point'ах

Чтобы использовать фильтр в point’е, добавьте в point название фильтра в верхнем регистре.

Фильтр URI

Фильтр URI указывает на абсолютный путь до цели запроса. Абсолютный путь начинается с символа /, следующего сразу за доменом или ip-адресом цели.

Фильтр URI указывает на строковое значение. Данный фильтр не может указывать на сложные структуры данных (массивы и хэш-таблицы).

Пример:

Point URI_value будет указывать на значение /login/index.php в запросе GET http://example.com/login/index.php.

Фильтр Path

Фильтр Path указывает на массив с частями пути URI. К элементам этого массива необходимо обращаться по индексу. Индексация массива начинается с нуля.

Использование регулярных выражений в point'е

Пример:

Для запроса GET http://example.com/main/login/index.php HTTP/1.1 фильтр Path указывает на следующий массив:

Индекс Значение
0 main
1 login
  • Point PATH_0_value будет ссылаться на значение main, которое находится в массиве, на который указывает фильтр Path, с индексом 0;

  • Point PATH_1_value будет ссылаться на значение login, которое находится в массиве, на который указывает фильтр Path, с индексом 1.

Если URI запроса состоит только из одной части, фильтр Path будет указывать на пустой массив.

Пример:

Для запроса GET http://example.com/ HTTP/1.1 фильтр Path указывает на пустой массив.

Фильтр Action_name

Фильтр Action_name указывает на часть URI, начинающуюся после последнего символа / и заканчивающуюся точкой.

Фильтр Action_name указывает на строковое значение. Данный фильтр не может указывать на сложные структуры данных (массивы и хэш-таблицы).

Пример:

  • Point ACTION_NAME_value будет указывать на значение index для запроса GET http://example.com/login/index.php.;

  • Point ACTION_NAME_value будет указывать на пустое значение для запроса GET http://example.com/login/.

Фильтр Action_ext

Фильтр Action_ext указывает на часть URI после последнего символа /, начинающуюся с первой точки. Если эта часть отсутствует в запросе, то фильтр Action_ext не может быть использован в point'е.

Фильтр Action_ext указывает на строковое значение. Данный фильтр не может указывать на сложные структуры данных (массивы и хэш-таблицы).

Пример:

  • Point ACTION_EXT_value будет указывать на значение php для запроса GET http://example.com/main/login/index.php;
  • Фильтр Action_ext не может быть использован в point'е, указывающем на запрос GET http://example.com/main/login/.

Фильтр Get

Фильтр Get указывает на хэш-таблицу с параметрами, расположенными в строке запроса. К элементам этой хэш-таблицы необходимо обращаться по имени параметра.

Использование регулярных выражений в point'е

Имя параметра в point'е может являться регулярным выражением языка программирования Ruby.

Параметры в строке запроса могут также содержать сложные структуры данных: массивы и хэш-таблицы. Для обращения к значениям, которые содержатся в этих структурах, необходимо использовать фильтры Array и Hash соответственно.

Пример:

Для запроса POST http://example.com/login?id=01234&username=admin фильтр Get будет указывать на следующую хэш-таблицу:

Имя параметра Значение
id 01234
username admin
  • Point GET_id_value будет ссылаться на значение 01234, соответствующее имени параметра id хэш-таблицы, на которую указывает фильтр Get;

  • Point GET_username_value будет ссылаться на значение admin, соответствующее имени параметра username хэш-таблицы, на которую указывает фильтр Get.

Фильтр Header

Фильтр Header указывает на хэш-таблицу с именами и значениями заголовков. К элементам этой хэш-таблицы необходимо обращаться по имени заголовка.

Имя заголовка в point'е

Имя заголовка в point'е может быть указано:

  • Заглавными буквами;
  • В том виде, в котором оно присутствует в запросе.

Использование регулярных выражений в point'е

Имя заголовка в point'е может являться регулярным выражением языка программирования Ruby.

Заголовки запроса могут также содержать массивы значений. Для обращения к значениям в массиве необходимо использовать фильтр Array.

Пример:

Для запроса

GET /login/index.php HTTP/1.1
Connection: keep-alive
Host: example.com
Accept-encoding: gzip

фильтр Header будет указывать на следующую хэш-таблицу:

Имя заголовка Значение
Connection keep-alive
Host example.com
Accept-Encoding gzip
  • Point HEADER_Connection_value будет ссылаться на значение keep-alive, соответствующее заголовку с именем Connection в хэш-таблице, на которую указывает фильтр Header;
  • Point HEADER_Host_value будет ссылаться на значение example.com, соответствующее заголовку с именем Host в хэш-таблице, на которую указывает фильтр Header;
  • Point HEADER_Accept-Encoding_value будет ссылаться на значение gzip, соответствующее заголовку с именем Accept-Encoding в хэш-таблице, на которую указывает фильтр Header.

Фильтр Post

Фильтр Post указывает на содержимое тела запроса.

Вы можете использовать имя фильтра Post в point'е для того, чтобы работать с содержимым тела запроса.

Пример:

Для запроса

POST http://example.com/main/index.php HTTP/1.1
Content-Type: text/plain
Content-Length: 28

с телом

This is a simple body text.

point POST_value будет указывать на значение This is a simple body text. в теле запроса.

Вы также можете работать с телом запроса, содержащим сложные структуры данных. Для обращения к значениям, лежащим в структурах данных в теле запроса, в point'е после фильтра Post используйте следующие фильтры:

results matching ""

    No results matching ""