Interceptores HTTP en AngularJS

// Petición GET
$http.get('/url').
success(function(data, status, headers, config) {
// callback de éxito
}).
error(function(data, status, headers, config) {
// callback de error
});

Interceptores HTTP

var config = {headers:  {
'Authorization': 'Basic d2VudHsvcnRobgFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;odata=verbose',
"X-Testing" : "testing"
}
};
  • request: este evento nos devuelve la configuración del objeto http permitiéndonos modificarla o crear una nuevo.
  • requestError: este evento es llamado justo antes de lanzar un error en la petición
  • response: este evento nos permite modificar el objeto respuesta recibido en una petición.
  • responseError: este evento es llamado justo antes de lanzar un error de respuesta
// Definición de la factoría
$provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
return {
// optional method
'request': function(config) {
// do something on success
return config;
},
// optional method
'requestError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
},
// optional method
'response': function(response) {
// do something on success
return response;
},
// optional method
'responseError': function(rejection) {
// do something on error
if (canRecover(rejection)) {
return responseOrNewPromise
}
return $q.reject(rejection);
}
};
});
angular.module('starter.services', [])

.factory('myHttpInterceptor', function($q,$rootScope,$location,$localStorage) {

return {

request: function (config) {

if(config.url.indexOf("/api/") !== -1)){

isLogged=$localStorage.get('logged');
if(isLogged){
user=$localStorage.getObject('user');
config.headers['Authorization'] = 'Basic ' + user.encode;
}else{
$location.path('/login');
}
}

return config || $q.when(config);
},

responseError: function(response) {
// Unauthorized
if(response.status==401){
$location.path('/login');
}

return $q.reject(response);
}
};
})

--

--

Full Stack Web Developer — adrianalonso.es

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store