Запуск и роутинг
Во всех событиях доступен apiContext — контекст API.
| Событие | Момент вызова | Остальные параметры |
|---|---|---|
| onBeforeStart | До проверки активности модуля | httpRequest |
| onAfterStart | После проверки активности модуля | httpRequest |
| onBeforeCors | После глобальной проверки IP, до проверки CORS | httpRequest |
| onAfterCors | После успешного завершения проверки CORS | httpRequest |
| onBeforeRouting | После CORS, непосредственно перед поиском роута | httpRequest |
| onAfterRouting | После выбора роута, до его IP-проверки и авторизации | httpRequest, route |
Параметры
httpRequest — Bitrix\Main\HttpRequest. route — Native\Api\Routing\Route\CompiledRoute; его конфигурация доступна через getConfig().
Через EventResult::SUCCESS можно заменить httpRequest, а после выбора роута — route. Типы объектов должны сохраняться.
CORS и выбор роута
CORS проверяется между onBeforeCors и onAfterCors, до событий маршрутизации. Настройки CORS не передаются в параметры событий. Заголовок Origin:
$origin = $httpRequest->getHeader('Origin');onAfterCors вызывается после успешного завершения валидатора, включая запросы без Origin. При отказе CORS это событие и события маршрутизации не вызываются. Обычный массив или HttpResponse из CORS-обработчика немедленно завершает конвейер по общему контракту. Изменение запроса в After не запускает повторную проверку CORS.
После onAfterRouting вызывается onBeforeIpAccess, проверяются IP-списки выбранного роута. При успешной проверке вызывается onAfterIpAccess. Если обработчик onAfterRouting заменил route, используются списки нового роута.
Штатный OPTIONS завершается после onAfterCors: ни onBeforeRouting, ни onAfterRouting не вызываются. Для остальных запросов onBeforeRouting выполняется перед поиском роута; если роут не найден, onAfterRouting не вызывается.
Константы — в справочнике ModuleEventConfig.