在此记录下自己第一次使用angular拦截器
首先需要使用命令生成interceptor.
ng generate interceptor [name]
然后在生成的interceptor文件的intercept方法中进行实现业务代码:
import { Injectable } from '@angular/core';
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor,
HttpResponse,
HttpErrorResponse,
} from '@angular/common/http';
import { Observable, map, tap } from 'rxjs';
import { EnvironmentService } from './environment.service';
@Injectable()
export class RequestInterceptor implements HttpInterceptor {
constructor(private env: EnvironmentService) {}
intercept(
request: HttpRequest<unknown>,
next: HttpHandler
): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap(
(event: HttpEvent<any>) => {
if (event instanceof HttpResponse) {
switch (event.body.code) {
case 200:
break;
}
}
return event;
},
(error: any) => {
if (error instanceof HttpErrorResponse) {
switch (error.status) {
case 401:
localStorage.removeItem(this.env.config.sessionKey);
window.location.href = window.location.origin + '/';
break;
case 500:
break;
}
}
}
)
);
}
}
接下来,就需要在app.module.ts文件中配置拦截器。
然后,每次service下的httpClient请求都会经过intercept方法。