0

如何让$ http拦截器只对给定模式做出反应?例如,我希望拦截器处理每个“/ api/*”请求并将其他请求单独留下。AngularJS具有选择性URL的http拦截器

+1

你可以有选择地应用的拦截,所以拦截器将不得不评估'config'对象(HTTPS://docs.angularjs .org/api/ng/service/$ http#usage)并决定是否应该采取行动。 – Claies

回答

1

您可以在请求或响应中筛选成功的URL或拒绝函数。

假设您需要处理以“数学/”开头的网址请求和响应的错误。

这里是你的拦截器。

$httpProvider.interceptors.push(function($q, mathError) { 
         return { 

          requestError: function(rejection){        
           mathError.anyError(rejection);  
           return $q.reject(rejection); 
          }, 

          responseError: function(rejection){        
           mathError.anyError(rejection); 
           return $q.reject(rejection); 
          } 
         }; 
    }); 

这里是你的工厂,你处理它

myApp.factory('mathError', function(){ 
    return { 
       anyError: function(rejection){ 

        if (rejection.config.url.substr(0, 5) === "math/") { 

         console.log("Only Math errors are handled here"); 

         //Do whatever you need here 
        } 
       }    

});