处理Angular 5中的HTTP状态代码

时间:2018-08-30 18:00:58

标签: angular5

我正在尝试在角度服务中捕获称为后端服务的服务中的http状态代码,当我看到状态204时遇到了问题,但是当记录角度显示状态为null时,这就是我在做的事情服务:

return this.http.get<JSON>(mybackendsserviceurl)
      .do(res => {
      })
      .catch(res => {
        return this.handleError(res);
      });
  }

  private handleError(err: HttpErrorResponse) {
    console.log(err.message);
    return Observable.throw(err.message);
  }

如何从后端服务中捕获不同的错误,例如204,403,404,500 ...等,并为每个错误显示用户友好的消息? 我的前端正在从API网关调用服务,而我正在设置响应集成中的错误。

1 个答案:

答案 0 :(得分:0)

要处理不同的状态码,只需检查它们:

this.http.get<JSON>(<URL>)
    .subscribe( 
        res => console.log(res), 
        err => {
            console.error(err);
            this.handleError(err);
        });


private handleError(err: HttpErrorResponse) {
    if( err.status == 500 ) {

        return Observable.throw(new Error(<YOUR USERFRIENDLY MESSAGE>));

    } else if( err.status == 400 ) {

        return Observable.throw(new Error(<YOUR MESSAGE>));
    }

    // you can also catch all errors of a group like this
    else if( err.status < 500 && err.status >= 400 ) {

        return Observable.throw(new Error(<CLIENT ERROR MESSAGE>));
    }
}

在您的UI中,您可以处理Observable,当然,还可以显示一个带有错误消息的漂亮对话框。