Я пытаюсь реализовать Угловой перехватчик для Исключения. По крайней мере, для одного. У меня есть токен, и когда он устаревает, он делает TokenAlmostExpired exception
. Это исключение содержит errorCode = 101
. В перехватчике я проверяю, что код 101, а затем мне нужно отправить POST request
в backend's /refresh endpoint
, чтобы я мог обновить токен.Сделайте запрос http от Angular Interceptor?
.factory('errorInjector',['$injector', function ($q, $injector) {
var vm = this;
var errorInjector = {
'response': function (response) {
console.log(response);
return response;
},
'responseError': function (rejection) {
if (JSON.stringify(rejection.data.errorCode) === JSON.stringify(101)) {
vm.getRefreshToken();
}
return $q.reject(rejection);
}
};
return errorInjector;
}]);
и
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('errorInjector');
}]);
$ HTTP
Но есть проблема на уровне перехватчика, что я не могу просто дать ему зависимость от $http
, потому что есть Circular dependency found: $http <- errorInjector <- $http <- $templateFactory <- $view <- $state
$ scope
И не могу поставить getRefreshToken()
на $scope
, так как зависимость $ scope также дает «Циркулярную зависимость».
$ Injector
var http = $injector.get('$http');
не работает, как хорошо, и дает мне Erorr.
Итак, как я могу поймать исключение в перехватчике, а затем сделать запрос $ http оттуда?
Возможно, вы захотите рассмотреть вопрос об отмене события и получить его в службе и выполнить выполнение оттуда –
Не используйте корневой указатель, создайте свой собственный агрегатор событий ... –
Можете ли вы показать полный код ошибки? Похоже, что это не полная реализация. –