Angular 6访问HTTP错误响应正文

时间:2019-03-12 10:36:01

标签: angular angular6

当HTTP请求失败时,我无法访问JSON响应有效载荷。

this.myService.makeSomeHttpRequest(values).subscribe((res) => {
  console.log(res) // works as expected
}, (err) => {
  console.log(typeof err) // string
})

err是一个字符串,看起来像这样:

500 - Internal Server Error Details: Http failure response for http://some/url: 500 Internal Server Error

这是请求方法:

private makeSomeHttpRequest(values: any): any {
  return this.http.put('http://some/url', values)
}

HTTP响应具有一个JSON响应主体,其中包含我需要的有价值的数据,但我无法访问它。

如何访问它?我已经看到了与此类似的问题,但仅针对Angular 2而不是Angular6。Angular 2的答案似乎无关紧要。我只能假设在这些主要版本之间发生了某些变化。

1 个答案:

答案 0 :(得分:0)

如果您使用@angular/http来调用API方法,那么请将其更改为@angular/common/http,如果您正在使用@angular/common/http方法,请检查您的RxJS导入,它应该是这样的:

import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { catchError } from 'rxjs/operators';

,您必须调用您的API,如下所示:

return this.http.get<T>(this.endpointUrl, this.getRequestHeaders()).pipe<T>(
      catchError(error => {
        return error;
      }));