我正在寻找最佳实践指南来处理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对象是OK,并且服务正在运行并且不会引发错误,则此方法可以正常工作。在服务可能失败并返回500的情况下,我希望能够在组件中以200响应的方式处理此问题。 (示例 - 组件将显示&#34;成功&#34;消息,或者将向用户显示&#34;此呼叫失败&#34;消息以提示他们再次尝试)。
我对Angular4很新,找不到任何这种处理的例子。在此先感谢您的帮助
答案 0 :(得分:0)
您的handleError
方法做了什么?
如果您要么省略此方法,要么重新抛出其中的Promise.reject()
,您的错误将逐渐渗透到组件中,并且可以以类似的方式使用:
this.workStreamService.save(this.workStream)
.then(workstream => // Do something on success)
.catch(() => // Do something on error);
Angular的http方法(例如put
)将为您处理代码 - 如果您的服务收到成功代码,它将被转换为已解决的承诺(经过整个{ {1}}阶段),否则它将被转换为Observable
中被拒绝的承诺。