我正在实施angularjs服务,该服务会保存$http
中localStorage
来电所发送的数据。为了做到这一点,我正在使用请求拦截器,因此无论何时通过$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
服务是一个单例,我无法弄清楚如何在我的应用程序的不同位置使用它的两个实例。有没有办法实现这个目标?
我经历了这个问题,但似乎它确实解决了循环依赖
的问题答案 0 :(得分:0)
我检查拦截器中的URL并使用它来过滤掉对其他服务的请求。我将我的服务的基本URL设置为我的模块中的常量,然后检查。如果请求不是相关服务,则只是通过而不执行任何操作。
但也许更好的方法是设置数据服务而不是拦截器。有很多关于数据服务的教程。