如何在AngularJS中使用两个单独的$ http服务实例?

时间:2015-08-31 15:28:31

标签: angularjs angular-http angular-http-interceptors

我正在实施angularjs服务,该服务会保存$httplocalStorage来电所发送的数据。为了做到这一点,我正在使用请求拦截器,因此无论何时通过$http发送http请求,数据都会保存在localStorage中。下面是我的拦截器代码,

var OfflinkJs = angular.module('OfflinkJs', []);

OfflinkJs.factory('cacheInterceptor', function () {
    var cacheInterceptor = {
        request: function (config) {
            // Here I am saving the config as a string in localstorage
            return config;
        }
    };
    return cacheInterceptor;
});

要使上面的拦截器工作,我必须在interceptors $httpProvider数组中注册它。我已经这样做了,

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

问题

现在,当我在另一个模块中使用OfflinkJS模块时,所有$http调用都通过我的拦截器。但是我希望$http服务发送的一些请求使用我的拦截器,而其他一些请求

由于$http服务是一个单例,我无法弄清楚如何在我的应用程序的不同位置使用它的两个实例。有没有办法实现这个目标?

我经历了这个问题,但似乎它确实解决了循环依赖

的问题
  

I need two instances of AngularJS $http service or what?

1 个答案:

答案 0 :(得分:0)

我检查拦截器中的URL并使用它来过滤掉对其他服务的请求。我将我的服务的基本URL设置为我的模块中的常量,然后检查。如果请求不是相关服务,则只是通过而不执行任何操作。

但也许更好的方法是设置数据服务而不是拦截器。有很多关于数据服务的教程。