在拦截器中,需要使用 RxJS 的 catchError 操作符来捕获错误并进行处理。以下是一个示例代码:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest, next: HttpHandler): Observable> {
const token = localStorage.getItem('token');
if (token) {
req = req.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
}
return next.handle(req).pipe(
catchError(error => {
if (error.status === 403) {
// 处理 403 错误
}
return throwError(error);
})
);
}
}
在这个示例中,拦截器会检查是否存在 token,并在请求头中添加 Authorization。同时,使用 catchError 操作符来捕获错误并进行处理。如果错误的状态码是 403,则可以在 catchError 中处理相应的错误逻辑。