拦截$ http请求并返回响应,无需服务器请求

时间:2017-03-16 14:42:26

标签: angularjs http

我希望,在某些http请求中,从内存中返回数据而不是让它到达服务器。我知道我可以编写http拦截器,但我不确定如何从请求中实际返回响应?

{{1}}

2 个答案:

答案 0 :(得分:5)

这是一个只使用拦截器的解决方案。我仍然认为评论中的Érics解决方案更优雅,但现在你有不同的选择可以考虑。

app.factory('myHttpInterceptor', function ($q, myCache) {
    return {
        request: function (config) {
            var cached = myCache.getCachedData(config.params);
            if(cached){
                return $q.reject({cachedData: cached, config: config });
            }
            return config;
        },

        response: function(response){
            // myCache.saveData(response.data);
        },

        responseError: function(rejection) {      
            if(rejection.cachedData){
                return $q.resolve(rejection.cachedData);
            }
            return $q.reject(rejection);
        }
    };
});

答案 1 :(得分:2)

您可以查看此文章:Caching HTTP

或者您可以使用$http的缓存参数(请查看更多角度documentation):

$http.get('api/path',{
    cache: true
}