adrianalonso.es
web developer
$http.get('/url').
success(function(data, status, headers, config) {
// callback de éxito
}).
error(function(data, status, headers, config) {
// callback de error
});
var config = {headers: {
'Authorization': 'Basic d2VudHsvcnRobgFuOkNoYW5nZV9tZQ==',
'Accept': 'application/json;odata=verbose',
"X-Testing" : "testing"
}
};
$http.get("/test", config);
Para implementar un interceptor http en angularjs se necesita registrar una factoría la cual se inyectará en la configuración del servicio $httpProvider. Este interceptor nos permite suscribirnos a los siguientes eventos:
// 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);
}
};
});
// configuracion del interceptor
$httpProvider.interceptors.push('myHttpInterceptor');
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);
}
};
}http://adrianalonso.es/2015/01/interceptores-http-para-angularjs/