要在Angular 7中应用全局的HTTP拦截器,可以按照以下步骤操作:
http.interceptor.ts
,并在其中导入需要的模块和服务:import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable()
export class MyHttpInterceptor implements HttpInterceptor {
constructor() {}
intercept(req: HttpRequest, next: HttpHandler): Observable> {
// 在此处编写拦截逻辑
return next.handle(req);
}
}
app.module.ts
文件中,将拦截器添加到HTTP_INTERCEPTORS
提供者:import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { MyHttpInterceptor } from './http.interceptor';
@NgModule({
imports: [BrowserModule, HttpClientModule],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: MyHttpInterceptor,
multi: true
}
],
bootstrap: [AppComponent]
})
export class AppModule {}
intercept
方法,在此方法中添加所需的拦截逻辑。例如,可以在每个请求的header中添加一个认证token:intercept(req: HttpRequest, next: HttpHandler): Observable> {
const token = 'your_auth_token';
// 克隆请求并添加认证header
const authReq = req.clone({
headers: req.headers.set('Authorization', `Bearer ${token}`)
});
return next.handle(authReq);
}
这样,每次发出的HTTP请求都会经过全局拦截器,并根据设置的逻辑进行处理。请根据自己的需求自定义拦截器的逻辑。