在我的Angular JS网站上,我有很多模块和许多资源(我从哪里使用Rest API)
我想为每个&中的所有传出请求添加自定义标头。每个模块。
例如:这里有2个模块:common& ABC
//---File 1 common.js
angular.module("common",[])
.config(['$httpProvider',
function($httpProvider)
{
$httpProvider.defaults.headers.common['x-access-token'] =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJOYW1lIjoiQWJkdWwiLCJpYXQiOjE0NjUwMzkwMzgsImV4cCI6MTQ2NTEyNTQzOH0.6BMBuEl2dbL736qUqNYXG29UBn_HRyCyWEmMXSG3euE';
}
])
.service("commonApi",['$resource',
function($resource)
{
this.getBankList = function()
{
return $resource('api/emi/banklist:quoteId', { },{}).query();
}
}]);
//---File 2 abc.js
angular.module("abc",[])
.config(['$httpProvider',
function($httpProvider)
{
$httpProvider.defaults.headers.common['x-access-token'] =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJOYW1lIjoiQWJkdWwiLCJpYXQiOjE0NjUwMzkwMzgsImV4cCI6MTQ2NTEyNTQzOH0.6BMBuEl2dbL736qUqNYXG29UBn_HRyCyWEmMXSG3euE';
}
])
.factory('emiModel', ['$resource',
function($resource) {
return $resource('api/emi/QuoteList:quoteId', { }, {
update: { method: 'PUT' }
});
}])
在上面的代码中,我不得不将.config添加到每个模块和在那里添加标题。
在每个模块中添加它是非常耗时的。 违反DRY原则。
有没有简单的方法可以将此配置添加到我的应用中的所有模块而无需重复代码?
对于Carity:我使用了工厂&服务只是为了表明我可能正在使用任何东西,但我仍然希望传递标题。
答案 0 :(得分:1)
在上面的代码中,我不得不将.config添加到每个模块和加上 在那里头。
在每个模块中添加它是非常耗时的。违反了DRY 原理
事实并非如此。加载模块后,Angular不会对它们产生影响。
config
阻止影响应用中加载了common
模块的每个模块。即在此设置中,$http
所有config
来电都会受到影响:
angular.module("app",["abc", "common"])...
angular.module("abc",[])...
虽然建议在每个依赖common
的子模块中加载config
模块。因此,当它们与app
分开加载时(例如在规格中),它们不会破坏。