2016-09-29 5 views
0

Ich habe einen $http Service, der eine API-Aufruf und ich habe eine transformResponse und Fehler Abfangvorrichtung beide an jeden Anruf angeschlossen. Im Falle von Fehlern kann ich sehen, dass die Transformationsantwort zuerst aufgerufen wird, gefolgt von einem Interzeptor. Ich möchte nicht, dass die Transformationsmethode für Fehlerreaktionen aufgerufen wird, ich möchte, dass sie direkt zum Interzeptor springt. Wie kann ich das erreichen?

Ich weiß, dass ich (response.status != 200) in jede Transformationsmethode einfügen kann, aber ich habe viele dieser Methoden, und ich will das nicht in jedem von ihnen tun.

+0

gehen mit allen benutzerdefinierten Anbieter nützlich sein –

Antwort

2

Sie müssen wahrscheinlich auf Interzeptoren gehen, um mit der Anforderungsantwort im Allgemeinen zu spielen.

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

Vielleicht wird es auch

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