インターセプタは$ httpProvider.interceptors配列に追加することで $ httpProviderに登録されているサービス工場です。 ファクトリが呼び出され、依存関係(指定されている場合) が挿入され、インターセプタが返されます。
intercepter の背後にある基本的な考え方は、それが各$ HTTP要求の前に呼び出されるということであり、あなたは、ユーザーがログインしているかどうかを確認するためにサービスを使用してに追加する必要があるトークンまたは何か他のものを追加することができますステータスコードに基づいてレスポンスを処理するのと同様に、の$ http要求ごとにという応答のロジックを追加することもできます。
ここでは、httpリクエストごとにアクセストークンを追加する方法を示します。
angular.module('myapp')
.factory('authHttpResponseInterceptor', function($q, $location, sessionService, $http) {
return {
response: function(response) {
//some logic here
return response || $q.when(response);
},
responseError: function(rejection) {
if (rejection.status === 401) {
//some logic here
}
return $q.reject(rejection);
}
}
});
:ここ angular.module('myapp')
.run(['$rootScope', '$injector', function($rootScope,$injector) {
$injector.get("$http").defaults.transformRequest = function(data, headersGetter) {
if (sessionService.isLogged()) {
headersGetter()['Authorization'] = "Bearer " + sessionService.getAccessToken();
}
if (data) {
return angular.toJson(data);
}
};
});
あなたは応答intercepterを使用する方法であります