Разработчик, который впервые видит в логах приложения или в коде коллег слово interceptor, обычно сталкивается с одной и той же ситуацией: запрос к серверу «волшебным образом» дополняется токеном авторизации, хотя в самом коде запроса этого кода нет. Причина именно в перехватчике — это компонент, который встраивается в цепочку обработки запроса или ответа и выполняет свою логику до того, как данные дойдут до адресата.
Interceptor (перехватчик) — это программный механизм, который «перехватывает» вызовы, запросы или события на пути от отправителя к получателю, позволяя изменить, дополнить, залогировать или заблокировать их, не меняя основной код. Концепция используется в веб-разработке, мобильных приложениях, сетевых библиотеках и даже в операционных системах. Ниже разберём, как это работает, где применяется и чем перехватчик отличается от похожих механизмов.
Как работает interceptor: общий принцип
Принцип работы перехватчика проще всего представить как «таможенный пост» на дороге. Запрос (например, HTTP-запрос к API) — это автомобиль, а interceptor — пост, на котором машину останавливают, проверяют документы, могут догрузить что-то в багажник и только потом пропускают дальше. На обратном пути, когда приходит ответ от сервера, перехватчик снова может вмешаться: например, расшифровать данные или обработать ошибку.
Технически это реализуется через цепочку обработчиков (chain). Перехватчик получает объект запроса, выполняет свою логику и вызывает следующий элемент цепочки. Если перехватчиков несколько, они образуют конвейер: каждый по очереди получает управление. Важно понимать, что перехватчик имеет доступ и к запросу, и к ответу — это отличает его от простых фильтров, которые часто работают только в одну сторону.
💡Interceptor — это «прослойка» между клиентом и сервером, которая может читать и изменять запросы и ответы, не затрагивая основной код приложения.