私は、例外のための角度インターセプターを実装しようとしています。少なくとも1つは。私はトークンを持っていて、古いenoghバックエンドがTokenAlmostExpired exception
を投げる時です。この例外にはerrorCode = 101
が含まれています。インターセプタでは、コードが101であることを確認してから、POST request
をバックエンドの/refresh endpoint
に送信して、トークンを更新する必要があります。
.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
しかしCircular dependency found: $http <- errorInjector <- $http <- $templateFactory <- $view <- $state
がありますので、問題は、私はちょうど$http
にそれに依存性を与えることができないことを、インターセプタレベルであります$ scope
そして、$ scope依存性が '循環依存性(circular dependency)'をも与えるので、の機能を$scope
にすることはできません。
$インジェクターは
var http = $injector.get('$http');
は同様に動作しない、と私はerorr与えます。
インターセプタで例外を捕捉し、そこから$ httpリクエストを行うにはどうすればよいですか?
イベントを発生させ、そのイベントをサービスで取り出してそこから実行することをお勧めします。 –
rootscopeを使用せず、独自のイベントアグリゲータを作成してください... –
完全なerrorInjectorコードを表示できますか?それは完全な実装ではないようです。 –