gpt4 book ai didi

javascript - 在服务级别处理 HttpClient Http 错误

转载 作者:行者123 更新时间:2023-11-29 21:00:56 25 4
gpt4 key购买 nike

我在我的应用程序中有一个处理身份验证的共享服务,我试图尽可能远离 http 请求来抽象我的组件逻辑,但是,我看到的每一点文档似乎都希望我返回httpClient Observable,订阅它并执行组件内部处理结果和错误的所有逻辑。

我现在的服务代码完全坏掉了,但是看起来是这样的:

userLogin(email: String, password: String) {
const body = { email: email, password: password };
return this.httpClient.post('http://localhost/users/login', body).subscribe(
this.handleResults,
this.handleErrors
);
}

handleResults(results: any) {
if (results.errors) {
console.log(results.errors);
} else {
return results;
}
}

handleErrors(err: HttpErrorResponse) {
if (err.error instanceof Error) {
// A client-side or network error occurred. Handle it accordingly.
console.log('A ', err.status, ' error occurred:', err.error.message);
} else {
// The backend returned an unsuccessful response code.
// The response body may contain clues as to what went wrong,
console.log('Could not connect to server.');
console.log('Backend returned code ' + err.status + ', body was: ' + JSON.stringify(err.error));
}
}

理想情况下,在组件模块上,我会有类似回调函数的东西,在响应准备好时调用。似乎我正在尝试与 Angular 模式背道而驰,但与此同时,我不明白为什么 Angular 需要对在组件级别执行的一般 http 错误进行错误处理。

所以我想基本问题是:如何在服务中处理 httpClient 错误,而不是在单个组件中处理?

最佳答案

你可以在这里处理错误,并且仍然返回可观察对象,就像这样

return this.httpClient.post('http://localhost/users/login', body).catch(this.handleErrors)

关于javascript - 在服务级别处理 HttpClient Http 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46533199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com