使用AngularJS拦截器

时间:2016-03-23 14:12:34

标签: angularjs caching

缩进是通过使用AngularJS拦截器拦截请求和响应来缓存API调用。以下是我目前的代码。如果请求存在于缓存中,我不知道该怎么做。这可行吗?这是正确的方法吗?

app.factory('apiCacheMiddleware', apiCacheMiddleware);

function apiCacheMiddleware($cacheFactory) {  
    var cache = $cacheFactory('apiCache');
    var interceptor = {
        request: function(config) {
            console.log(config)
            if(config.method === 'GET' && cache.get(config.url)){
                // What to return from here???
            }
            return config;
        },
        response: function(response) {
            console.log(response);
            if(response.config.method === 'GET'){
                cache.put(response.config.url, response.data);
            }
            return response;
        }
    };
    return interceptor;
};

1 个答案:

答案 0 :(得分:0)

您需要做什么(如果您仍然需要它)是将您使用$cacheFactory创建的缓存分配给请求(config.cache = cache; - 检查之前的值可能会有用并做出一些决定)。在响应中,您将按照自己的意愿填写该缓存,AngularJS将负责其余的工作。