1

我正在寻找最佳实践指南来处理 Angular4 中失败的 PUT HTTP 请求。

我的场景:一个简单的组件将尝试通过使用 put 请求调用 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 很陌生,找不到任何这种处理的例子。在此先感谢您的帮助

4

1 回答 1

0

你的handleError方法是做什么的?

如果你省略这个方法,或者重新抛出它的Promise.reject()内部,你的错误将渗透到组件中,并且可以以类似的方式使用:

this.workStreamService.save(this.workStream)
  .then(workstream => // Do something on success)
  .catch(() => // Do something on error);

Angular 的 http 方法,例如put将为您处理代码 - 如果您的服务收到成功代码,它将被转换为已解决的承诺(在经历整个Observable阶段之后),否则它将被转换为被拒绝的承诺以供消费在一个.catch

于 2017-09-29T15:07:29.940 回答