如何访问拦截器内部的错误响应主体?

时间:2019-05-08 12:34:58

标签: angular rxjs angular-httpclient angular-http-interceptors

我使用拦截器来嗅探所有HTTP请求/响应。

在服务器返回http 400的情况下,如何获取正文响应,Angular引发异常,并且在catch块中我无法获得正文消息:

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

2 个答案:

答案 0 :(得分:1)

在我的项目中,我使用HttpErrorResponse中的'@angular/common/http'来实现这一目标 例如:

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

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

希望这对您有帮助

答案 1 :(得分:1)

下面是一个示例,您可以在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      
   }         
  }

希望它能对您有所帮助。