gpt4 book ai didi

angular - 使用 HTTPErrorResponse 处理 HTTP 错误 - 组件还是服务?

转载 作者:太空狗 更新时间:2023-10-29 19:26:16 26 4
gpt4 key购买 nike

在 Angular 中,有一种常见的方法可以通过使用 HttpErrorResponse 来处理 http 错误吗?这是真的吗?

我想知道的第二件事是我应该在哪里使用它,是在我进行 API 调用的服务中还是在我调用服务的组件中?

Error handling in a component:

enter image description here

Error handling in a service:

@Injectable()
export class ArticleService {

constructor(private _http: HttpClient) { }

private apiUrl = environment.apiUrl;

getArticles(): Observable<People[]> {
return this._http.get<People>(this.apiUrl + '/People/GetAll')
.catch(this.handleError);
}
private handleError(err: HttpErrorResponse) {
console.log(err.message);
return Observable.throw(err.message);
}

所以我想知道遵循 Angular 文档,这些方法中哪一种更好、更约定俗成?

为什么?

非常感谢!

最佳答案

In Angular there is a common way to handle http errors by using HttpErrorResponse

→ 是和否。

这很常见,但不是最佳做法。

最佳做法是使用 interceptor像这样:

export class ErrorHandlerService implements HttpInterceptor {

constructor() {}

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next
.handle(req)
.catch((err: HttpErrorResponse) => {...});
}

}

至于你的函数的位置,使用拦截器解决了这个问题,但让我提醒你最好的做法:

→ 您应该将与模板相关的逻辑保留在您的组件中,并将与业务相关的逻辑保留在您的服务中。

我不记得它在文档中的确切位置,但我 100% 确定。 编辑 Here it is.

关于angular - 使用 HTTPErrorResponse 处理 HTTP 错误 - 组件还是服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50044697/

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