假设我需要在用户发出的每个请求中包含一个 GroupId 参数,但我不想修改每个服务调用以包含该参数。是否可以使 GroupId 自动附加到所有请求,无论是 POST 还是 GET 查询字符串?
我一直在研究拦截器request
功能,但不知道如何进行更改
** 编辑 **
下面的当前工作示例是 Morgan Delaney 和 haimlit 的建议的组合(我认为无论如何它是一个组合)。基本思想是,如果请求是 POST,则修改config.data
. 对于 GET,修改params
. 到目前为止似乎工作。
仍然不清楚提供程序系统如何在 Angular 中工作,所以我不确定在这里修改 data.params 属性是否完全合适。
.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(['$rootScope', '$q', 'httpBuffer', function ($rootScope, $q, httpBuffer) {
return {
request: function (config) {
if (config.data === undefined) {
//Do nothing if data is not originally supplied from the calling method
}
else {
config.data.GroupId = 7;
}
if (config.method === 'GET') {
if (config.params === undefined) {
config.params = {};
}
config.params.GroupId = 7;
console.log(config.params);
}
return config;
}
};
} ]);
} ]);