0
我有一個$http
服務來進行API調用,並且我有一個transformResponse
和錯誤攔截器都附加到每個調用。如果出現錯誤,我可以看到轉換響應首先被調用,然後是攔截器。我不希望爲錯誤響應調用轉換方法,我希望它跳過攔截器。我怎樣才能做到這一點?
我知道我可以把(response.status != 200)
放到每個轉換方法中,但我有很多這些方法,我不想在它們中的每一箇中都這樣做。
我有一個$http
服務來進行API調用,並且我有一個transformResponse
和錯誤攔截器都附加到每個調用。如果出現錯誤,我可以看到轉換響應首先被調用,然後是攔截器。我不希望爲錯誤響應調用轉換方法,我希望它跳過攔截器。我怎樣才能做到這一點?
我知道我可以把(response.status != 200)
放到每個轉換方法中,但我有很多這些方法,我不想在它們中的每一箇中都這樣做。
你可能需要去攔截器玩一般的請求響應。
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');
});
也許這也將是有益的
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.transformResponse.unshift(
function (data, headers) {
/* some code*/
return data;
});
}])
去與任何自定義商 –