如何在请求发送之前在$ http中附加一些默认数据

时间:2015-07-13 11:02:48

标签: javascript angularjs

在我的角度应用程序中,我想覆盖$ http。因此,只要有$ http服务调用,它就会在原始数据中附加一些默认数据并发送请求。类似地,当响应到来时,它将检查一些特定数据并重新格式化,success()将获得修改后的响应。

我是Angularjs的新手。任何人都可以帮我吗?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

看看$ http拦截器(https://docs.angularjs.org/api/ng/service/ $ http)。使用它们,您可以拦截请求和ajax请求的响应。

创建如下服务:

module.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
  return {
    'request': function(config) {
      // do something pre-request, like inject Headers properties:
      //config.headers['Authorization'] = '';
      return config;
    },

   'requestError': function(rejection) {
      //do something with the error
      return $q.reject(rejection);
    },


    'response': function(response) {
      // do something on success of request
      return response;
    },


   'responseError': function(rejection) {
      // do something on error like:
      //if(response.status == 401){
      //     userUnauthorized();
      //}
      return $q.reject(rejection);
    }
  };
});

在您的app配置中,按下拦截器:

module.config(['$httpProvider', function($httpProvider) {  
    $httpProvider.interceptors.push('myInterceptor');
}]);

答案 1 :(得分:0)

你必须通过在angular中实现的$ http方法进行探索。你可以看到一个功能

function sendReq (config, reqData, reqHeaders)

您可以根据需要更改reqData。 现在类似于成功和完成功能,您可以使用您的代码在将数据发送到回调之前对其进行操作。 否则,您也可以更改来自xhr请求的数据。 这将是你在函数createxhr()中以angular

编写的

答案 2 :(得分:0)

您也可以使用以下代码。

//或者,通过匿名工厂注册拦截器

datetime