Как получить тело json при обнаружении ошибки в httpClient - PullRequest
0 голосов
/ 18 марта 2020

Я использую Angular с httpClient. API REST возвращает состояние 422 Unprocessable Entity в одном случае, которое принимается как ошибка. Но API также включает некоторые данные JSON, которые содержат информацию об ошибке. Как я могу получить доступ к этим данным?

Сервис

createAnalyzer(body: any): Observable<any> {
  return this.http.post(this._endpoint + '/api/analyzers', body)
    .pipe(catchError(this.handleError));
}

private handleError(error) {
  let errorMessage = ''
  if (error.error instanceof ErrorEvent) {
      // client-side error
      errorMessage = `Error: ${error.error.message}`;
  } else {
      // server-side error
      errorMessage = `Error Code: ${error.status}\nMessage: ${error.message}`;
  }
  return throwError(errorMessage)
}

1 Ответ

0 голосов
/ 18 марта 2020

Тело ответов об ошибках можно найти в свойстве error аргумента обратного вызова catchError.

Так что если у вас есть следующий ответ:

{
  "message": "Invalid credentials"
}

Вы можете поймать его, используя catchError как это:

login(): Observable<any> {
  const url = ''; // TODO
  const body = {}; // TODO

  return this.http.post(url, body).pipe(
    tap(response => console.log('Success!')),
    catchError((err: any) => {
      const response = err.error;
      const message = response.message;
      console.log(`Error: ${message}`);
      return of(null);
    })
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...