下面是一个使用Angular 8的HTTP请求拦截器的代码示例:
首先,创建一个名为http-interceptor.service.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 {
intercept(request: HttpRequest, next: HttpHandler): Observable> {
// 在发送请求之前可以对请求进行修改
const modifiedRequest = request.clone({
headers: request.headers.set('Authorization', 'Bearer my-token')
});
// 继续发送修改后的请求
return next.handle(modifiedRequest);
}
}
然后,在你的模块中注册这个拦截器服务。例如,在app.module.ts
中:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { MyHttpInterceptor } from './http-interceptor.service';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, HttpClientModule],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: MyHttpInterceptor,
multi: true
}
],
bootstrap: [AppComponent]
})
export class AppModule { }
以上代码中,我们使用HTTP_INTERCEPTORS
常量来提供拦截器,并将MyHttpInterceptor
类设置为拦截器的实现。将multi
属性设为true
以允许注入多个拦截器。
现在,每次发送HTTP请求时,拦截器都会在请求发送之前修改请求。在上述示例中,我们在请求头中添加了一个名为Authorization
的自定义标头。
这就是使用Angular 8的HTTP请求拦截器的解决方法。你可以根据实际需求修改拦截器的逻辑来满足你的需求。