Контекст обработчиков#
При использовании цепочки обработчиков отдельные обработчики могут работать с контекстом для хранения дополнительной информации.
Структура контекста#
В контексте есть строковые поля userId и systemId и ассоциативная структура для хранения произвольных данных. В начале обработки запроса контекст пустой. Обработчики могут добавлять данные в контекст и читать их из него. Предполагается, что обработчики агностичны по отношению к тому, что было источником данных для контекста.
Extract-Filter-Enrich#
Типовое использование контекста - подход Extract-Filter-Enrich (Извлечь-Отфильтровать-Обогатить):
Извлечение. Данный обработчик тем или иным способом получает данные и сохраняет их в контекст. Поведение при отсутствии данных в источнике определяется на уровне конкретного обработчика. См. Экстракторы.
Фильтрация. Данный обработчик по тем или иным правил на основании данных в контексте либо пропускает запрос, либо возвращает ошибку. См. Фильтры.
Обогащение. Данный обработчик видоизменяет исходный запрос на основании данных контекста. Например, могут добавляться/удаляться заголовки. См. Обогатители.
Глобальный контекст#
В секции конфигурационного файла proxy.global-request-context могут быть указаны значения, которые всегда будут доступны в контексте.
Примечание
Также существует специальное значение ${requestId}, которое может быть использовано для получения уникального id текущего запроса.