AngularJS : 1.6.5
Bootstrap : 3.3.7
※v1.2.3のサンプルはこちら。
(1)$httpサービスのInterceptor
レスポンスデータ
| № | 名前 | 年齢 | 住所 |
|---|---|---|---|
| {{item.id}} | {{item.name}} | {{item.age}} | {{item.address}} |
<button ng-click="getFriends(true)">データ取得</button><br />
<button ng-click="getFriends(false)">データ取得(エラー)</button><br />
<strong>レスポンスデータ</strong><br />
<table class="table table-striped">
<thead>
<tr>
<th>№</th><th>名前</th><th>年齢</th><th>住所</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in friends" >
<td>{{item.id}}</td><td>{{item.name}}</td><td>{{item.age}}</td><td>{{item.address}}</td>
</tr>
</tbody>
</table>
1)アノニマスのファクトリを使ってinterceptorを設定する方法
var demoApp = angular.module('demoApp', []);
demoApp.config(function($httpProvider) {
$httpProvider.interceptors.push(function ($q) {
return {
request: function(config) {
config.headers.Authorization = 'Basic xxxx';
console.log('Interceptor:request', config.headers);
return config;
},
requestError: function(rejection) {
console.log('Interceptor:requestError', rejection);
return $q.reject(rejection);
},
response: function(response) {
console.log('Interceptor:response', response);
return response;
},
responseError: function(rejection) {
console.log('Interceptor:responseError', rejection.statusText);
return $q.reject(rejection);
}
}
})
});
demoApp.controller('intceptCtrl', function ($scope, $http) {
$scope.getFriends = function (tf) {
var svrURL = (tf ? "friends.json" :"invalid-url.php");
var config = {};
$http.get(svrURL, config)
.then(function onSuccess(response) {
console.log('Client:response', response.status);
$scope.friends = response.data;
}, function onError(response) {
console.log('Client:responseError',response.status);
$scope.friends = [];
});
};
});
2)サービスとしてinterceptorを登録する方法
var demoApp = angular.module('demoApp', []);
demoApp.factory('myInterceptor', function($q) {
return {
request: function(config) {
config.headers.Authorization = 'Basic xxxx';
console.log('Interceptor:request', config.headers);
return config;
},
requestError: function(rejection) {
console.log('Interceptor:requestError', rejection);
return $q.reject(rejection);
},
response: function(response) {
console.log('Interceptor:response', response);
return response;
},
responseError: function(rejection) {
console.log('Interceptor:responseError', rejection.statusText);
return $q.reject(rejection);
}
};
});
demoyApp.config(function($httpProvider) {
$httpProvider.interceptors.push('myInterceptor');
});