防止 Angular $httpProvider 拦截器在模板加载时触发

Prevent Angular $httpProvider interceptor from firing on template loads

想要一个简单的拦截器,它会在每 200 个状态时触发一个日志记录方法。这很容易设置,但现在我注意到我的所有 Angular 模板也是通过 $httpProvider 加载的,因此触发了我的 200 拦截器。有什么方法可以区分模板加载和实际 API 调用?

  $httpProvider.interceptors.push(function() {
      return {
          response: function(response) {

              if(response.status === 200) console.log(response);
              return response;
          }
      };
  });

是的。你可以。在响应对象中,有一个配置对象,配置对象内部是您请求的资源的 URL。所以,

 $httpProvider.interceptors.push(function() {
      return {
          response: function(response) {

                function endsWith  ( str, suffix ) {
                    return str.indexOf(suffix, str.length - suffix.length) !== -1;
                }

              if(response.status === 200 && !endsWith( response.config.url, '.html') ) console.log(response);
              return response;
          }
      };
  });