[英]How to handle failed http put in Angular4
我正在寻找最佳实践准则来处理Angular4中失败的PUT HTTP请求。
我的情况是:一个简单的组件将尝试通过放置请求调用API来更新记录。
示例代码段:
我的组件包含以下代码:
this.workStreamService.save(this.workStream);
这是在名为workStreamService的服务上调用一个方法,该方法具有以下代码:
save(workStream: WorkStream): Promise<WorkStream> {
const url = this.workStreamUrl + '/' + workStream.id;
return this.http
.put(url, JSON.stringify(workStream), {headers: this.headers})
.toPromise()
.then(() => workStream)
.catch(this.handleError);
}
该代码大部分是复制粘贴的,并从Angular4教程改编而来,但是该教程的深度不足以处理错误/成功。
API不会返回任何响应主体,对象或DTO,而只是返回HTTP状态代码。 200表示成功,500表示出现问题。
如果传递的workStream对象正常,并且服务正在运行且不会引发错误,则此方法正常。 在服务可能失败并返回500的情况下,我希望能够以不同于200响应的方式在组件中进行处理。 (示例-组件将显示“成功”消息,或向用户显示“此呼叫失败”消息以提示他们重试)。
我对Angular4还是很陌生,找不到这种处理的任何示例。 在此先感谢您的帮助
您的handleError
方法有什么作用?
如果您省略此方法,或者在其中重新抛出Promise.reject()
,则错误将滴入该组件,并且可以通过类似的方式使用:
this.workStreamService.save(this.workStream)
.then(workstream => // Do something on success)
.catch(() => // Do something on error);
Angular的http方法(例如put
将为您处理代码-如果您的服务收到成功代码,则它将被转换为已解决的承诺(经过整个Observable
阶段之后),否则将被转换为被拒绝的承诺在.catch
消费。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.