将自定义标头添加到所有模块中的所有资源

时间:2016-06-04 12:20:20

标签: angularjs

在我的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:我使用了工厂&服务只是为了表明我可能正在使用任何东西,但我仍然希望传递标题。

1 个答案:

答案 0 :(得分:1)

  

在上面的代码中,我不得不将.config添加到每个模块和加上   在那里头。

     

在每个模块中添加它是非常耗时的。违反了DRY   原理

事实并非如此。加载模块后,Angular不会对它们产生影响。

config阻止影响应用中加载了common模块的每个模块。即在此设置中,$http所有config来电都会受到影响:

angular.module("app",["abc", "common"])...
angular.module("abc",[])...

虽然建议在每个依赖common的子模块中加载config模块。因此,当它们与app分开加载时(例如在规格中),它们不会破坏。