Фаза Match

Область действия фазы

Фаза используется в модифицирующем расширении и является необязательной для его работы (соответствующая секция match в YAML-файле может как присутствовать, так и отсутствовать).

Фаза должна отсутствовать в YAML-файле расширения, если создается немодифицирующее расширение.

Подробную информацию о типах расширений FAST вы можете получить здесь.

Синтаксис описания элементов запроса

При создании расширения FAST вам необходимо понимать структуру запроса к приложению и ответа от приложения, чтобы корректно описывать элементы запроса, с которыми необходимо работать, с помощью point’ов.

Более подробная информация о синтаксисе описания элементов запроса доступна здесь.

Эта фаза позволяет проверять поступающие базовые запросы на соответствие заданным критериям.

Секция match в YAML-файле расширения состоит из массива пар <ключ: значение>. Каждая пара описывает некоторый элемент запроса (ключ) и данные в этом элементе (значение). Ключ и значение могут содержать регулярные выражения в формате регулярных выражений Ruby.

В фазе Match происходит поиск соответствий между заданными парами <ключ: значение> и базовым запросом:

  • Проверяется наличие в запросе необходимых элементов (например, значение пути в URL, GET-параметра или HTTP-заголовка) с необходимыми данными.

    Пример 1.

    'GET_a_value': '^\d+$' — в запросе должен присутствовать GET-параметр a, значением которого являются цифры.

    Пример 2.

    'GET_b*_value': '.*' — в запросе должен присутствовать GET-параметр, начинающийся с b, с любым значением (в том числе пустым).

  • В случае, если значение данных null, проверяется, что соответствующий элемент отсутствует в запросе.

    Пример.

    'GET_a': null — в запросе должен отсутствовать GET-параметр a.

Чтобы базовый запрос прошел через фазу Match, необходимо, чтобы он целиком соответствовал всем парам <ключ: значение> в секции match. Если для какой-либо пары <ключ: значение>, описанной в секции match, не будет найдено соответствия в базовом запросе, то такой запрос будет отброшен.

Пример.

Представленная ниже секция match содержит в себе список из нескольких пар <ключ: значение>. Для того, чтобы базовый запрос прошел через фазу Match, необходимо, чтобы он соответствовал всем этим парам:

match:
  - 'HEADER_HOST_value': 'example.com'
  - 'GET_password_value': '^\d+$'
  - 'HEADER_CONTENT-TYPE_value': null
  1. Базовый запрос должен содержать HTTP-заголовок Header, значение которого включает в себя строку example.com;
  2. В данных GET-параметра password должны быть только цифры;
  3. Заголовок Content-Type должен отсутствовать.

results matching ""

    No results matching ""