在 angularjs 中的所有 $http 服务中传递一个公共数据

Pass a common data in all $http services in angularjs

我希望在所有 $http 调用中发送特定数据。我可以在某处定义它以便我不需要更改所有 $http 调用吗? 例如,

  $http({
      method: 'POST',
      url: serviceUrl,
      data: {
          "key1": data1,
          "key2": data2,
      }
  })

在我所有的 $http 调用中添加一个 data3 作为默认值。预先感谢您的回复。

您可以使用 $httpProvider

转换或拦截 $http 对象
var app = angular.module('test', []);
app.config(function ($httpProvider) {
    $httpProvider.defaults.transformRequest = function(data){
        if (data === undefined) {
            return data;
        } 
        data.key3 = "This will always be set in a POST";

        return $.param(data);
    }
});

我从未尝试过像这样附加 POST 数据,但它应该可以工作。

对于 GET 参数转换...

$httpProvider.interceptors.push(function() {
  return {
   'request': function(config) {
       //config.params contains query/request parameters
       if (config.params){
         config.params.key3 = "Hello World"
       }
       return config;
    }
  };
});