Контекст обработчиков#

При использовании цепочки обработчиков отдельные обработчики могут работать с контекстом для хранения дополнительной информации.

Структура контекста#

В контексте есть строковые поля userId и systemId и ассоциативная структура для хранения произвольных данных. В начале обработки запроса контекст пустой. Обработчики могут добавлять данные в контекст и читать их из него. Предполагается, что обработчики агностичны по отношению к тому, что было источником данных для контекста.

Extract-Filter-Enrich#

Типовое использование контекста - подход Extract-Filter-Enrich (Извлечь-Отфильтровать-Обогатить):

  • Извлечение. Данный обработчик тем или иным способом получает данные и сохраняет их в контекст. Поведение при отсутствии данных в источнике определяется на уровне конкретного обработчика. См. Экстракторы.

  • Фильтрация. Данный обработчик по тем или иным правил на основании данных в контексте либо пропускает запрос, либо возвращает ошибку. См. Фильтры.

  • Обогащение. Данный обработчик видоизменяет исходный запрос на основании данных контекста. Например, могут добавляться/удаляться заголовки. См. Обогатители.

Глобальный контекст#

В секции конфигурационного файла proxy.global-request-context могут быть указаны значения, которые всегда будут доступны в контексте.

Примечание

Также существует специальное значение ${requestId}, которое может быть использовано для получения уникального id текущего запроса.