AngularJS - 如何在所有请求上发送通用URL参数?

时间:2016-06-30 01:14:54

标签: angularjs http interceptor url-parameters

我想在所有请求上发送相同的网址参数,无论是获取还是发布请求,如下所示:

?region=us&toolName=abc

是否可以使用AngularJS拦截器?或者还有其他更好的方法吗?

感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

使用httpInterceptor最好,然后你可以检查是否已经存在其他参数并扩展它们......或者只使用显示的那些

答案 1 :(得分:0)

AngularJS $ http方法允许您通过config对象指定您的HTTP请求谓词以及此类参数,该对象可以包含params对象,其类似于{ region: "us", toolName: "abc" }反过来成为一个查询字符串。使用示例:

$http({ url: "test.aspx", method: "GET", params: { region: "us", toolName: "abc" } }).then(
function(response){
     alert("success!");
}, function(response){
    alert("failure.");
}

答案 2 :(得分:0)

创建服务以设置默认参数请求:

'use strict';

var ParamsService = function() {

  return {
    set: function (params) {
      var defaultParams = {
        region: 'us',
        toolName: 'abc'
      };

      // Use any function to extend objects (currently, I'm using lodash)
      return _.extend(defaultParams, params);
    }
  };
};

ParamsService.$inject = [

];

请求:

$http({ 
  url: 'url.json', 
  method: 'GET', 
  params: ParamsService.set({otherProperty: otherValue}) 
})
.then(
  function (data) {

  },

  function (error) {

  }
);

这不是一个好的解决方案,但可以帮助你解决问题:)

答案 3 :(得分:0)

$ httpProvider.defaults.headers.common ['key'] ='value'