Что такое 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: токен, ошибки, логирование. Запрос клонируют, а порядок цепочки имеет значение.