Ответ 1
Перехватчики находятся в документации здесь.
Вот пример того, как его написать.
.config([
'$httpProvider',
function($httpProvider) {
var interceptor = [
'$q',
'$rootScope',
'userSession',
function($q, $rootScope, userSession) {
var service = {
// run this function before making requests
'request': function(config) {
if (config.method === 'GET' || userSession.isAuth()) {
// the request looks good, so return the config
return config;
}
// bad request, so reject
return $q.reject(config);
}
};
return service;
}
];
$httpProvider.interceptors.push(interceptor);
}
])
Причина, по которой на странице $httpProvider
о перехватчиках нет ничего плохого, потому что разработчики не включили следующий код в $http
script, который docs генерируется из:
/**
* @ngdoc property
* @name $httpProvider#interceptors
* @description
// etc
Документация в целом, как известно, является неполной, неточной и/или запутанной. До недавнего времени я всегда думал, что это проблема, когда я не мог ничего найти или понять, но я обнаружил, что это часто, потому что документация просто паршивая. Тем не менее, мы все должны быть благодарны за то, что у нас есть такие прекрасные инструменты для использования и имейте в виду, что, возможно, документация плохая, потому что время должно быть сосредоточено на написании инструмента вместо руководства для инструмента.
Самая надежная "документация" - это исходный код, хотя он может быть намного менее дружелюбным к чтению! В исходном коде, указанном выше, вы можете увидеть this.interceptors = []
. this
относится к $httpProvider
, поэтому он присваивает свойство interceptors
$httpProvider
со значением, являющимся пустым массивом. Чтобы добавить свои перехватчики, вы просто push()
ваш перехватчик в этот массив.