在 Angular 5 中处理 HTTP 状态代码

handle HTTP status codes in Angular 5

我正在尝试在调用后端服务的服务中捕获 angular 中的 http 状态代码,我遇到了状态 204 的问题,但是在记录 angular 时显示状态为空,这是我在服务中所做的事情:

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 网关调用服务,我在 Response Integrations 中设置错误。

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

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,当然,还可以显示带有错误消息的漂亮对话框。