【发布时间】:2016-08-01 00:55:20
【问题描述】:
我一直在使用 angular.io 文档中使用的 http 错误处理策略:
getHeroes () {
return this.http.get(this._heroesUrl)
.map(res => <Hero[]> res.json().data)
.catch(this.handleError);
}
private handleError (error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error');
}
}
在某些情况下,我将收到 204 状态代码(无数据),而不是 JSON 响应。在这种情况下,直到无法通过res.json() 解析结果时才会调用错误处理程序,因此传递给handleError 的错误是“error.json is not a function”。
如何查询响应流以检查 200(OK)状态代码或响应标头内容类型为“application/json”,并使用更相关的错误消息向错误处理程序发出信号?
【问题讨论】:
-
谢谢,我错过了那个。对于其他人,请注意,自 alpha 47 以来的错误处理行为仅适用于低于 200 和高于 299 的状态代码。由于我的状态代码是 204(未找到),我仍然需要手动抛出错误,如“alpha 46 及以下”。
-
呃,HTTP 响应 204 是“无数据”(“未找到”是 404)。
-
是的,对不起,我的意思是“没有数据”。