我试图使用带有缓存和拦截器的angulars $ http。
快速提问: 目前当angular从服务器获得答案时,它首先缓存它,然后它通过拦截器传递它。 是否有可能强制角度首先将其传递通过拦截器,然后才缓存它?
长期问题:
服务器以类似于以下格式响应每个呼叫: {permission:BOOL,数据:[...]} 在拦截器响应中,我检查权限,如果正确,我将其丢弃并仅将数据字段传递给应用程序级别。如果它失败了我拒绝并弹出一个错误等...(也许我应该在transformResponse函数中执行它,但我会面对同样的问题)。
然后,对于某些API调用,我请求一堆这样的资源: /资源/ ALL 它显然缓存了这个请求和答案,但我接下来要做的就是伪造我收到的每一个资源。 所以即将调用/ resource / {some resource id}已经被缓存,因为我已经在我请求ALL的呼叫中收到了它。
我面临的问题是,当我想伪造缓存时,在应用程序级别上,我失去了" {权限:BOOL"因为我把它扔进了拦截器。
一些说明: 1-当然我也可以伪造许可部分,只是硬编码,但我觉得它不是一个选项,因为如果我以后添加/修改/删除元数据它是我的另一个地方看看。 2-另一种方法是不要在拦截器/ transformResponse上抛出元数据,但这也不是一个选择,因为我不想选择“数据”。每次我在应用程序级别调用$ http时都会显示字段。
所以我认为对我来说最好的选择是在拦截器之后缓存,而不是之前。
希望我明白这个问题,欢迎任何答案!