В Angular для перехвата fetch
запросов в интерсепторе следует использовать класс HttpInterceptor
. HttpInterceptor
позволяет перехватывать и изменять HTTP запросы до и после их отправки на сервер.
Для того чтобы поймать fetch
реквест в интерсепторе, необходимо выполнить следующие шаги:
1. Создайте класс интерсептора, реализующий интерфейс HttpInterceptor
. Например:
import { Injectable } from '@angular/core'; import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http'; import { Observable } from 'rxjs'; @Injectable() export class MyInterceptor implements HttpInterceptor { intercept( req: HttpRequest<any>, next: HttpHandler ): Observable<HttpEvent<any>> { // Ваш код для перехвата и обработки запроса return next.handle(req); } }
2. Зарегистрируйте созданный интерсептор в модуле вашего приложения. Например:
import { NgModule } from '@angular/core'; import { HTTP_INTERCEPTORS } from '@angular/common/http'; import { MyInterceptor } from './my-interceptor'; @NgModule({ providers: [ { provide: HTTP_INTERCEPTORS, useClass: MyInterceptor, multi: true, }, ], }) export class AppModule {}
Теперь, каждый fetch
запрос будет передаваться через ваш интерсептор и можно выполнять нужные действия с ним.
Внутри метода intercept
можно выполнять различные операции с запросом, например:
- Модифицировать заголовки запроса
- Добавить авторизационный токен
- Отправить сообщение в лог
- Обработать ошибку или выполнить какое-либо дополнительное действие
Например, чтобы добавить авторизационный токен к каждому запросу, можно воспользоваться следующим кодом:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { const token = 'your-auth-token'; const authReq = req.clone({ headers: req.headers.set('Authorization', `Bearer ${token}`) }); return next.handle(authReq); }
Теперь каждый запрос будет содержать заголовок с авторизационным токеном.
Таким образом, использование интерсепторов в Angular позволяет легко перехватывать и изменять fetch
запросы перед их отправкой на сервер, что помогает упростить обработку запросов и добавить необходимую логику в приложение.