Angular项目如何使用拦截器 httpClient 请求响应处理
Angular的拦截器(Interceptor)提供了一种机制,可以拦截所有的HTTP请求和响应,并在它们传递到或从服务器返回之前进行处理。这使得我们可以集中处理一些通用的任务,比如:
import { Injectable } from '@angular/core';
import {
HttpInterceptor,
HttpRequest,
HttpHandler,
HttpEvent,
HttpErrorResponse
} from '@angular/common/http';
import { Observab le, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
@ Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent <any>> {
// 在这里添加你的拦截逻辑
const token = localStorage.getItem('token');
if (token) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
}
return next.handle(reque st).pipe(
catchError((error: HttpErrorRe sponse) => {
// 错误处理
console.error('An error occurred:', error);
return throwError(error);
})
);
}
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
im port { AppComponent } from './app.component';
import { AuthInterceptor } from './auth.interceptor';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule
],
providers: [
{ provide: HTTP_I NTERCEPTORS, useClass: AuthInterceptor, multi: true }
],
bootstrap: [AppComponent]
})
export c lass AppModule { }
Angular的拦截器为我们提供了一种方便的方式来处理HTTP请求和响应。通过合理地使用拦截器,可以提高应用程序的安全性、可维护性和用户体验。
更多示例和详细说明,可以参考Angular官方文档: [移除了无效网址]
希望这个回答能帮助你更好地理解和使用Angular拦截器!
如果你还有其他问题,欢迎随时提问。