在Angular中,拦截器可以用来处理HTTP请求和响应。在拦截器中,可以使用HttpRequest和HttpEvent这两个类。
HttpRequest是一个向服务器发送HTTP请求的类,它包含了请求头、请求体和其他请求信息。HttpEvent是一个HTTP响应事件的抽象类,它可以包含HTTP响应和HTTP错误。
在拦截器中,需要使用泛型来指定HttpEvent的类型。下面是一个示例:
import { Injectable } from '@angular/core'; import { HttpInterceptor, HttpHandler, HttpRequest, HttpResponse, HttpEvent } from '@angular/common/http'; import { Observable } from 'rxjs'; import { tap } from 'rxjs/operators';
@Injectable()
export class MyInterceptor implements HttpInterceptor {
intercept(req: HttpRequest
// Add headers to the request
const clonedRequest = req.clone({ headers: req.headers.set('Authorization', 'my-auth-token') });
return next.handle(clonedRequest).pipe(
tap(
event => {
if (event instanceof HttpResponse) {
console.log('HTTP Response intercepted:', event);
}
},
error => {
console.error('HTTP Error intercepted:', error);
}
)
);
} }
在这个示例中,使用了HttpResponse和HttpError作为HttpEvent的具体类型。同时,在拦截器中也可以对请求和响应进行其他的修改和处理。