首页 > 解决方案 > 如何使用 Angular 5 识别来自 HTTP 拦截器的特定请求?

问题描述

我在 Angular 5 中使用 HTTPInterceptor 功能。它在克隆 http-request 并发送到服务器(后端服务器)时按预期工作。我仅从 HTTPInterceptor 显示和隐藏应用程序加载器,这也可以正常工作,但我对一个 GET 请求使用轮询,该请求每 5 秒从后端服务器获取数据,这让用户很恼火。那么,有什么方法可以检查 HTTPInterceptor 中的特定请求吗?并且也不允许在该请求上显示/隐藏加载程序。

以下是拦截函数的当前代码片段:

  intercept (req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    this.loadingIndicatorService.showLoader();
    this.customAuthorizationHeader();
    const apiRequest = req.clone({headers:this.headers});
    return next.handle(apiRequest).do
    ((response) => {
        if (response instanceof HttpResponse) {
          this.loadingIndicatorService.hideLoader();
        }
      },
      (error) => {
        this.loadingIndicatorService.hideLoader();
      });
  };

提前致谢。

标签: angularobservableinterceptor

解决方案


您可以检查是否req.url等于您要排除的路径,如下所示:

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // put this before your current code
    if (req.url.indexOf('/* the api path you want to exclude*/') === -1) {
      return next.handle(req);
    }
    // do your stuff here.
    return next.handle(req);
  }

推荐阅读