如何处理Angular HttpInterceptor中的HTTP状态?

时间:2019-01-19 16:51:48

标签: angular

我对POST请求使用附加选项:

 return this.http.post("", data, { observe: "response" });

当我尝试在拦截器中处理此响应时,我无法获得http状态:

 return next.handle(request).pipe(
      map((event: any) => {
          console.log(event.status);
      return event;
});

2 个答案:

答案 0 :(得分:1)

在管道内部使用catchError,如下所示:

 .pipe(
       catchError(err => { // catch response error from server
            if (err instanceof HttpErrorResponse) {
                  switch ((<HttpErrorResponse>err).status) {
                     case 401: // if is 401 error
                  }
             }

       })
  );

答案 1 :(得分:1)

您实际上不需要观察响应。您可以删除{观察:“响应”}。 在拦截器中处理它所需要做的就是将catchError添加到管道中。为了逃避错误(如果您希望请求成功完成),您应该在catchError中返回Observable。 您也可以通知用户或对某些错误执行某些操作,例如上面显示的Klodian。

localhost