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 参数?的主要内容,如果未能解决你的问题,请参考以下文章