【发布时间】:2018-02-03 06:22:44
【问题描述】:
正如我在另一个 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')
});
}
【问题讨论】:
标签: angular angular-http