首页 > 解决方案 > Angular:HttpInterceptor 对特定情况有不同的处理

问题描述

我知道 Angular 中有 HTTPInterceptor:

@Injectable()
export class HTTPRequestInterceptor implements HttpInterceptor {

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
      tap(
        (_response: HttpEvent<any>) => {
          // nothing to do ... ... used for sending anyway...
        },
        (error: HttpErrorResponse) => {
         ... // display message
        }

据我了解,这适用于我的所有请求。现在我的情况是,对于一个特定的请求,我不想应用常规的错误处理。有没有简单的方法来实现这一目标?例如在我的请求中设置一些特殊参数

this.http.get<MyInfo>(`getlastInfo/${id}`).toPromise();

标签: angularangular-http-interceptors

解决方案


一个简单但肮脏的方式

@Injectable()
export class HTTPRequestInterceptor implements HttpInterceptor {

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
 if(req.url.contains('getlastInfo')){
 //specific handling
 } else {
  //normal handling
 }

}

您还可以使用req.bodyreq.headers通过在标题中设置特定键值来进行检查。


推荐阅读