我正在调用 API 来获取随机详细信息。问题是,有时我会收到 502 错误作为网关错误,它也可能由于网络连接错误而中断。下面是我的 API 调用代码
// COMPONENT API CALL SUBSCRIBE
this._service.post('randomAPI/getdetails', filters).subscribe((response: any) => {
this.itemList = response;
});
// SHARED SERVICE
post<T>(url: string, body: any): Observable<T> {
return this.httpClient.post<T>(url, body);
}
每当我收到 500 或 502 服务器错误时,使用拦截器我都会路由到错误页面以通知用户作为服务器问题。
相反,如果 API 失败,我可以让 API 在组件级别或拦截器级别再尝试一次,然后路由到错误页面吗?
// INTERCEPTOR
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(catchError(error => {
if (error.status === 401 || error.status === 400 || error.status === 403) {
this.router.navigateByUrl('abort-access', { replaceUrl: true });
} else if (error.status === 500 || error.status === 502) {
this.router.navigateByUrl('server-error', { replaceUrl: true });
}
return throwError("error occured");
}));
}
我看到几个例子,因为他们使用管道并添加 retryWhen() 来实现这一点。但是由于我对 Angular 很陌生,所以我无法找到一种方法来做到这一点。
有人可以帮忙吗?