Что такое Axios Interceptor

Ответ

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) — и нет его, мудя. Вообще, удобная хуйня, если не перебарщивать, а то можно такую кашу из кода замутить, что сам потом будешь охуевать.