如何处理 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 教程中复制粘贴和改编的,但该教程的深度不足以处理 errors/successes。
API 不是 return 响应主体、对象或任何类型的 DTO,只是 HTTP 状态代码。成功200,出错500。
如果传递的 workStream 对象正常,并且服务 运行 并且不会抛出错误,则此方法工作正常。在服务可能失败且 return 500 的情况下,我希望能够在组件中以不同于 200 响应的方式处理此问题。 (示例 - 该组件将显示一条 "success" 消息,或者将向用户显示一条 "this call failed" 消息以提示他们重试)。
我是 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
.
中被拒绝的消费承诺
我正在寻找处理 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 教程中复制粘贴和改编的,但该教程的深度不足以处理 errors/successes。
API 不是 return 响应主体、对象或任何类型的 DTO,只是 HTTP 状态代码。成功200,出错500。
如果传递的 workStream 对象正常,并且服务 运行 并且不会抛出错误,则此方法工作正常。在服务可能失败且 return 500 的情况下,我希望能够在组件中以不同于 200 响应的方式处理此问题。 (示例 - 该组件将显示一条 "success" 消息,或者将向用户显示一条 "this call failed" 消息以提示他们重试)。
我是 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
.