如何使用angularJS拦截器只拦截特定的http请求?

前端之家收集整理的这篇文章主要介绍了如何使用angularJS拦截器只拦截特定的http请求?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道如何拦截所有的请求,但我只想拦截从我的资源的请求。

有谁知道如何做到这一点?

  1. services.config(['$httpProvider',function($httpProvider) {
  2. $httpProvider.interceptors.push('myHttpInterceptor');
  3. }]);
  4.  
  5. services.factory("userPurchased",function ($resource) {
  6. return $resource("/api/user/purchases/:action/:item",{},{
  7. 'list': {method: 'GET',params: {action: 'list'},isArray: false},'save': {method: 'PUT',params: {item: '@item'}},'remove': {method: 'DELETE',}
  8. );
  9. });
  10.  
  11. services.factory('myHttpInterceptor',function($q,$rootScope) {
  12. // $rootScope.showSpinner = false;
  13. return {
  14.  
  15. response: function(response) {
  16. $rootScope.showSpinner = false;
  17. // do something on success
  18. console.log('success');
  19. console.log('status',response.status);
  20. //return response;
  21. return response || $q.when(response);
  22. },responseError: function(response) {
  23. // do something on error
  24. $rootScope.showSpinner = true;
  25. console.log('failure');
  26. console.log('status',response.status)
  27. //return response;
  28. return $q.reject(response);
  29. }
  30. };
  31. });
如果只想截获来自特定资源的请求,可以使用$ request操作的可选拦截属性。 Angular的文档 see here(Usage> actions)

JavaScript

  1. angular.module('app',['ngResource']).
  2. factory('resourceInterceptor',function() {
  3. return {
  4. response: function(response) {
  5. console.log('response intercepted: ',response);
  6. }
  7. }
  8. }).
  9. factory('resourceService',['$resource','resourceInterceptor',function($resource,resourceInterceptor) {
  10. return $resource(":name",isArray: false,interceptor: resourceInterceptor}
  11. }
  12. );
  13. }]).
  14. run(['resourceService','$http',function(resourceService,$http) {
  15. resourceService.list({name: 'list.json'}); // <= intercepted
  16. $http.get('list.json'); // <= not intercepted
  17. }]);

Plunker:http://plnkr.co/edit/xjJH1rdJyB6vvpDACJOT?p=preview

猜你在找的Angularjs相关文章