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

Posted

技术标签:

【中文标题】AngularJS - 如何在所有请求上发送通用 URL 参数?【英文标题】:AngularJS - How to Send Common URL Parameters on All Request? 【发布时间】:2016-11-01 22:05:13 【问题描述】:

我想在所有请求上发送相同的 url 参数,无论是 get 还是 post 请求,如下所示:

?region=us&toolName=abc

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

感谢您的帮助。

【问题讨论】:

另见:docs.angularjs.org/api/ng/service/$http#interceptors 【参考方案1】:

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

【讨论】:

【参考方案2】:

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.");

【讨论】:

【参考方案3】:

创建一个服务来设置默认参数请求:

'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) 

  
);

这不是很好的解决方案,但可以帮助您解决问题:)

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于AngularJS - 如何在所有请求上发送通用 URL 参数?的主要内容,如果未能解决你的问题,请参考以下文章

在angularJS中处理多个异步发布请求

如何使用 angularjs $http.delete() 请求发送数据?

使用 AngularJS 发送 HTTP 标头请求

如何在Angularjs中编码一个字符串?

如何在AngularJS中丢弃预检响应

如何使用 angularjs 在 RESTful 请求中执行授权?