Как получить доступ к телу ответа об ошибке внутри перехватчика? - PullRequest
0 голосов
/ 08 мая 2019

Я использую перехватчик для прослушивания всех HTTP-запросов / ответов.

Как получить ответ тела в случае, когда сервер возвращает http 400, Angular вызывает исключение и в блоке catch я не могу получить сообщение тела:

return next.handle(request).pipe(
   catchError((error: HttpErrorResponse) => {
          console.log(error.body); // There is not body object here
});

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вот пример того, как вы можете сделать это с помощью Interceptor

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
      catchError(error => this.handleError(error))
    );
  }

  private handleError(error: HttpErrorResponse): Observable<any> {
     if (error.status === 400) {
      // Do your thing here      
   }         
  }

Надеюсь, это поможет вам.

1 голос
/ 08 мая 2019

В своих проектах я использую HttpErrorResponse из '@angular/common/http' для достижения этой цели. например:

this.http.get('url').subscribe( response => {

 }, (err: HttpErrorResponse) => {
        if (err.status === 401 || err.status === 404) {
             // do stuff
        }
}

Надеюсь, это поможет вам

...