На моем сайте 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: я использовал фабрику и сервис, чтобы показать, что я могу использовать что-то, но я все еще хочу, чтобы заголовок передавался.
В приведенном выше коде мне пришлось добавить.config для каждого модуля и добавить туда заголовок.
Достаточно много времени, чтобы добавить его в каждый модуль и нарушить принцип DRY.
Это неверно. Как только модуль загружен, Angular не делает различий между ними.
config
блокирует каждый модуль в приложении, в котором загружен common
модуль. Т.е. все вызовы $http
будут затронуты config
в этой настройке:
angular.module("app",["abc", "common"])...
angular.module("abc",[])...
Хотя рекомендуется загружать common
модуль в каждый подмодуль, который также зависит от config
. Таким образом, они не ломаются в случае, когда они загружаются отдельно от app
(например, в спецификациях).
config
. Если это невозможно по каким-либо причинам, используйте перехватчики, как показано в комментарии выше. Перехватчики могут быть определены в config
и они оцениваются при каждом запросе.