【问题标题】:Angular Resource - intercepting and transforming request/response dataAngular Resource - 拦截和转换请求/响应数据
【发布时间】:2017-11-07 05:58:33
【问题描述】:

我正在尝试转换/拦截我的 angular + 闭包项目中的一些请求但不是所有请求将我的 camelCase 键更改为 snake_case。

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

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

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

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

为此采取的最佳途径是什么?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您可以使用$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);
    

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 2020-10-22
      • 2020-09-25
      • 1970-01-01
      • 2019-02-13
      • 2018-04-19
      相关资源
      最近更新 更多