PassFront
  1. PassFront
  2. База знаний
  3. Формы, роутинг и HTTP

Что такое HTTP interceptors в Angular и для чего они нужны?

Формы, роутинг и HTTP

Interceptor — функция, которая перехватывает все исходящие запросы и входящие ответы HttpClient, чтобы выполнять общую логику в одном месте.

Применение

  • Добавить заголовок Authorization с токеном.
  • Обработать ошибки централизованно (401 — перенаправить на вход).
  • Логировать запросы, показывать индикатор загрузки.
  • Повторять неудавшиеся запросы.

Пример

export const authInterceptor: HttpInterceptorFn = (req, next) => {
  const token = inject(AuthService).token();
  const authReq = token ? req.clone({ setHeaders: { Authorization: `Bearer ${token}` } }) : req;

  return next(authReq).pipe(
    catchError((err) => {
      if (err.status === 401) inject(Router).navigate(['/login']);
      return throwError(() => err);
    }),
  );
};

// подключение
provideHttpClient(withInterceptors([authInterceptor]));

Особенности

Запрос иммутабелен, поэтому его меняют через clone. Порядок interceptors важен: запросы идут по порядку списка, ответы в обратном.

Коротко для собеседования

Interceptor — middleware для HTTP: токен, ошибки, логирование. Запрос клонируют, а порядок цепочки имеет значение.

Другие вопросы раздела