繁体   English   中英

如何处理Angular4中放置失败的http

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM