Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Angular4中处理失败的http put_Angular_Angular4 Httpclient - Fatal编程技术网

如何在Angular4中处理失败的http put

如何在Angular4中处理失败的http put,angular,angular4-httpclient,Angular,Angular4 Httpclient,我正在寻找在Angular4中处理失败的PUT HTTP请求的最佳实践指南 我的场景:一个简单的组件将尝试通过调用带有put请求的API来更新记录 示例代码段: 我的组件包含以下代码: this.workStreamService.save(this.workStream); save(workStream: WorkStream): Promise<WorkStream> { const url = this.workStreamUrl + '/' + workStream

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

我的场景:一个简单的组件将尝试通过调用带有put请求的API来更新记录

示例代码段:

我的组件包含以下代码:

this.workStreamService.save(this.workStream);
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);
}
这是对名为workStreamService的服务调用方法,该服务具有以下代码:

this.workStreamService.save(this.workStream);
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)将为您处理代码-如果您的服务收到一个成功的代码,它将在经过整个可观察阶段后转换为已解决的承诺,否则它将转换为在.catch中消费的拒绝承诺。

您的handleError方法做什么

如果您忽略此方法,或在其中重新引用一个Promise.reject,则您的错误将向下渗透到组件,并以类似的方式消耗:

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

Angular的http方法(如put)将为您处理代码-如果您的服务收到一个成功的代码,它将在经过整个可观察阶段后转换为已解决的承诺,否则它将转换为在.catch中消费的拒绝承诺。

这有助于阐明您的问题吗?啊!谢谢你,现在你这样解释似乎很简单。设法找出代码来做这件事。。。我没有意识到它会自动返回我试图显式执行的返回对象。谢谢这有助于阐明你的问题吗?啊!谢谢你,现在你这样解释似乎很简单。设法找出代码来做这件事。。。我没有意识到它会自动返回我试图显式执行的返回对象。谢谢