当状态为403时,Angular 4.0.0 http服务不会自动抛出错误

时间:2017-08-25 08:31:26

标签: angular angular-http

当我在另一个stackoverflow回答中读到 - 来自Angular 2 alpha 47 - 当响应状态字段大于299时,http服务应该自动抛出错误。我的问题是在什么阶段?

我的状态为403的http响应,但服务似乎允许执行所有map()方法。为什么它没有将响应重定向到catch块?

getLoggedInUser(): Observable<User> {
  return this.http.get(this.baseApiUrl + `api/user/me`)
    .map((res: Response) => {
      console.log(res.status); <-- 403
      return res.json();
   })
   .map((user: User) => new User().deserialize(user)) <-- This method shouldn't be fired, because it causes unexpected behaviour.
   .catch((error: any) => { 
      console.log(error);
      if (error.status === 403) {
        this.isRequestForbidden = true;
      } 
      return Observable.throw(error || 'Server error') 
  });

}

1 个答案:

答案 0 :(得分:1)

自早期alpha版本以来,Angular的这一特定方面可能会发生变化。使用版本4.3+,他们引入了全新的http服务,取代了旧服务。

那么为什么你不能在第一个403内检查.map()状态并在那里抛出错误。但基于commit,这不应该是一个案例。

  

如果您使用最新的角度4.3+,请确保您是。{   使用@anghular/common/http

中的HttpClient
相关问题