2016-09-29 71 views
0

我有一個$http服務來進行API調用,並且我有一個transformResponse和錯誤攔截器都附加到每個調用。如果出現錯誤,我可以看到轉換響應首先被調用,然後是攔截器。我不希望爲錯誤響應調用轉換方法,我希望它跳過攔截器。我怎樣才能做到這一點?

我知道我可以把(response.status != 200)放到每個轉換方法中,但我有很多這些方法,我不想在它們中的每一箇中都這樣做。

+0

去與任何自定義商 –

回答

2

你可能需要去攔截器玩一般的請求響應。

myApp.factory('authInterceptor', function ($rootScope, $q, $window) { 
    return { 
    request: function (config) { 
     config.headers = config.headers || {}; 
     if ($window.sessionStorage.token) { 
     config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token; 
     } 
     return config; 
    }, 
    response: function (response) { 
     if (response.status === 401) { 
     // handle the case where the user is not authenticated 
     } 
     return response || $q.when(response); 
    } 
    }; 
}); 

myApp.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('authInterceptor'); 
}); 
0

也許這也將是有益的

app.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.defaults.transformResponse.unshift(
     function (data, headers) { 
      /* some code*/ 
      return data; 
     }); 
}])