2017-06-06 81 views
1

我试图转换/拦截我的角度+闭合项目中的一些请求,但并非所有请求都将我的camelCase密钥更改为snake_case。角度资源 - 拦截并转换请求/响应数据

我设法在我的配置文件中添加了一个默认的拦截器和变形器$httpProvider,但是这样做包括模板在内的所有请求。在我的每个Resource配置中添加一个选项,我可以允许/禁止转换,但是只有在请求没有响应时才能访问配置选项,这意味着我必须首先检查其JSON是否不理想。

我相信也转换得到原始请求体(或者它可能是拦截器,我不记得所有的测试我做了),并将其转换为JSON等,似乎容易出错。

因为一些令人沮丧的原因,$resource的拦截器只允许responseresponseError拦截器。

是否有任何方法来拦截每个请求/响应JSON对象,我可以将变换器保存在它自己的文件/类/工厂中,并允许它或需要该函数并在每个请求上调用它?

最好的路线是什么?

回答

0

您可以使用$http拦截器。 $resource在后台使用$http服务发出请求,因此它将被应用。

function MyInterceptor() { 
    return { 
     request: config => { 
      // do your logic here 
      // you can modify only end-points you want to modify by using if statements 
     } 
    } 
} 

function config($httpProvider) { 
    $httpProvider.interceptors.push('MyInterceptor'); 
} 

angular 
    .module('app') 
    .factory('MyInterceptor', MyInterceptor) 
    .config(config);