加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:29:46 所属栏目:安全 来源:网络整理
导读:我知道如何拦截所有的请求,但我只想拦截从我的资源的请求。 有谁知道如何做到这一点? services.config(['$httpProvider',function($httpProvider) { $httpProvider.interceptors.push('myHttpInterceptor');}]);services.factory("userPurchased",function
我知道如何拦截所有的请求,但我只想拦截从我的资源的请求。

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

services.config(['$httpProvider',function($httpProvider) {
    $httpProvider.interceptors.push('myHttpInterceptor');
}]);

services.factory("userPurchased",function ($resource) {
    return $resource("/api/user/purchases/:action/:item",{},{
            'list': {method: 'GET',params: {action: 'list'},isArray: false},'save': {method: 'PUT',params: {item: '@item'}},'remove': {method: 'DELETE',}
    );
});

services.factory('myHttpInterceptor',function($q,$rootScope) {
    // $rootScope.showSpinner = false;
    return {

      response: function(response) {
        $rootScope.showSpinner = false;
        // do something on success
        console.log('success');
        console.log('status',response.status);
        //return response;
        return response || $q.when(response);
      },responseError: function(response) {
        // do something on error
        $rootScope.showSpinner = true;
        console.log('failure');
        console.log('status',response.status)
        //return response;
        return $q.reject(response);
      }
    };
  });
如果只想截获来自特定资源的请求,可以使用$ request操作的可选拦截器属性。 Angular的文档 see here(Usage> actions)

JavaScript

angular.module('app',['ngResource']).
  factory('resourceInterceptor',function() {
    return {
      response: function(response) {
        console.log('response intercepted: ',response);
      }
    }
  }).
  factory('resourceService',['$resource','resourceInterceptor',function($resource,resourceInterceptor) {
    return $resource(":name",isArray: false,interceptor: resourceInterceptor}
        }
    );
  }]).
  run(['resourceService','$http',function(resourceService,$http) {
    resourceService.list({name: 'list.json'}); // <= intercepted
    $http.get('list.json'); // <= not intercepted
  }]);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读