Ответ
Axios Interceptor — это механизм для перехвата HTTP-запросов и ответов перед их обработкой. Позволяет модифицировать запросы/ответы, добавлять заголовки, логировать ошибки или обрабатывать их глобально.
Пример перехватчика запроса:
axios.interceptors.request.use(config => {
config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
return config;
}, error => Promise.reject(error));
Пример перехватчика ответа:
axios.interceptors.response.use(response => response, error => {
if (error.response.status === 401) {
// Перенаправление на логин
}
return Promise.reject(error);
});
Особенности:
- Можно добавлять несколько интерцепторов
- Порядок выполнения: запросы — FIFO, ответы — LIFO
- Можно удалить интерцептор через
axios.interceptors.request.eject(interceptorId)
Ответ 18+ 🔞
А, ну это же та самая штука, которая как назойливый сосед — всё подслушает и везде свой нос сунет! Axios Interceptor, блядь. По сути, это такой глобальный перехватчик, который встаёт между твоим кодом и сервером, как охранник в клубе: «Стоять, блядь! Покажи, что у тебя в карманах!».
Вот представь: ты шлёшь запрос, а этот перехватчик его хватает и говорит: «Погоди-ка, дружок, забыл пропуск!». И суёт ему в карман токен из localStorage. Красота, ёпта!
axios.interceptors.request.use(config => {
config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
return config;
}, error => Promise.reject(error));
А бывает наоборот — ответ от сервера летит, а перехватчик его ловит и смотрит: «О, 401 ошибка? Да ты, сука, неавторизованный! А ну марш на страницу логина, быстро!».
axios.interceptors.response.use(response => response, error => {
if (error.response.status === 401) {
// Перенаправление на логин
}
return Promise.reject(error);
});
И самое охуенное — этих перехватчиков можно навесить овердохуища! Только запросы они обрабатывают как в очереди в столовой — кто первый пришёл, того и колбасят. А ответы — наоборот, как последний подарок на дне рождения: самый свежий интерцептор срабатывает первым, хитрая жопа.
А если какой-то интерцептор совсем обнаглел и только мешает? Выгнать его нахуй — раз плюнуть! axios.interceptors.request.eject(interceptorId) — и нет его, мудя. Вообще, удобная хуйня, если не перебарщивать, а то можно такую кашу из кода замутить, что сам потом будешь охуевать.