【发布时间】:2016-11-01 22:05:13
【问题描述】:
我想在所有请求上发送相同的 url 参数,无论是 get 还是 post 请求,如下所示:
?region=us&toolName=abc
是否可以使用 AngularJS 拦截器?还是有其他更好的方法?
感谢您的帮助。
【问题讨论】:
标签: angularjs http interceptor url-parameters
我想在所有请求上发送相同的 url 参数,无论是 get 还是 post 请求,如下所示:
?region=us&toolName=abc
是否可以使用 AngularJS 拦截器?还是有其他更好的方法?
感谢您的帮助。
【问题讨论】:
标签: angularjs http interceptor url-parameters
最好使用 httpInterceptor,然后您可以检查其他参数是否已经存在并扩展它们...或仅使用显示的参数
【讨论】:
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.");
}
【讨论】:
创建一个服务来设置默认参数请求:
'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) {
}
);
这不是很好的解决方案,但可以帮助您解决问题:)
【讨论】:
$httpProvider.defaults.headers.common['key'] = 'value'
【讨论】: