Отключить Angular HttpInterceptor для некоторых вызовов - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть приложение angular с HttpInterceptor, которое перехватывает ошибки http, чтобы показать какой-то диалог, общий для всех моих приложений.

Я хотел бы отключить перехватчик для некоторых определенных вызовов c, но я предпочитаю отключить поведение по умолчанию, когда я вызываю http, вместо того, чтобы записать исключение в перехватчик. Кто-нибудь нашел эту проблему?

Я могу быть более конкретным c с примером, если это необходимо.

С уважением

Davide

1 Ответ

3 голосов
/ 27 февраля 2020

Для этого можно использовать HttpBackend.

Описание: При вводе HttpBackend отправляет запросы непосредственно в бэкэнд, не проходя через цепочку перехватчиков.

Использование: Вы можете использовать то же, что и HttpClient, импортировав его из @angular/common/http

Пример:

import { HttpClient, HttpBackend } from '@angular/common/http';

...

@Injectable({
  providedIn: 'root'
})
export class HttpHelperService {

  private httpClient: HttpClient;

  constructor( httpBackend: HttpBackend) { 
     this.httpClient = new HttpClient(httpBackend);
  }

  // use like normal with HttpClient. However, should name it carefully to separate which http request go throught interceptor and which is not
  put(path: string, body: Object = {}): Observable<any> {
    return this.httpClient.put(
      `${this.URL}${path}`,
      JSON.stringify(body)
    ).pipe(catchError(this.formatErrors));
  }

....

ref: https://angular.io/api/common/http/HttpBackend

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...