AngularJS http拦截器具有选择性url

时间:2015-10-13 16:43:09

标签: javascript angularjs angular-http angular-http-interceptors

如何让$ http拦截器只对给定的模式做出反应?

例如,我希望拦截器能够处理每个“/ api / *”请求并单独留下其他请求。

1 个答案:

答案 0 :(得分:1)

您可以在请求或响应中过滤成功的网址或拒绝功能。

假设您需要处理以" math /"开头的网址的请求和响应的错误。

这是你的拦截器。

$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
                     }
                }            

});