[英]Error Handling Mechanism while Http Request (REST API) angular2
我在angular2中進行一些REST調用(使用HTTP請求)。依賴於條件請求的類型為GET,POST,PUT,DELETE。 一切正常,我使用下面的方法使用seprate服務文件和類(組件類)文件發出請求。
PostRequest(url,data){
this.headers = new Headers();
this.headers.append("Content-Type", 'application/json');
this.requestoptions = new RequestOptions({
method: RequestMethod.Post,
url: url,
body: JSON.stringify(data),
headers: this.headers
})
return this.http.request(new Request(this.requestoptions))
.map((res: Response) => {
if (res) {
if(res.status == 201){
return [{ status: res.status, json: res.json }]
}
else if(res.status != 201){
return [{ status: res.status, json: null }]
}
}
// i want to handle error here but how i don't know
});
}
this.base_path_service.PostRequest(url_postSection, data)
.subscribe(res=> {
if (res[0].status == 201) { //some stuff here..... }
});
現在來問一下,我的問題是
我知道next,error,oncomplete
的訂閱方法,但是可以在映射observable時處理錯誤嗎?返回this.http.request(new Request(this.requestoptions))。map(//是否可以處理這里錯誤而不是在訂閱時)
我希望得到通知給用戶取決於狀態代碼(201,200,204等...),所以我想編寫一次代碼,即在.map的時候,而不是編寫代碼agagin,並在訂閱時再次
如果任何其他方法有利於錯誤處理,而HTTP請將其作為答案與示例一起發布。
您可以利用catch運算符來處理錯誤:
return this.http.request(new Request(this.requestoptions))
.map((res: Response) => {
if (res) {
if(res.status == 201){
return [{ status: res.status, json: res.json }]
}
else if(res.status != 201){
return [{ status: res.status, json: null }]
}
}
}).catch(error) => {
// Do something
// Observable.throw(new Error('some error');
});
}
實際上,當發生錯誤時,將不會調用已注冊的回調而不是地圖運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.