角度资源 - 拦截和转换请求/响应数据

时间:2017-06-06 09:29:12

标签: javascript angularjs

我尝试转换/拦截我的angular + closure项目中的某些请求,但不是所有请求都将我的camelCase键更改为snake_case。

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

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

$resource的拦截器仅允许responseresponseError拦截器出于某种令人沮丧的原因。

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

最佳路线是什么?

1 个答案:

答案 0 :(得分: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);