如何将标头动态传递给 angularjs 的 $resource
Posted
技术标签:
【中文标题】如何将标头动态传递给 angularjs 的 $resource【英文标题】:How to pass headers on the fly to $resource for angularjs 【发布时间】:2014-11-04 10:27:04 【问题描述】:现在,我知道为 angularjs 调用动态设置标头中的令牌的唯一方法是通过 $http
像这样:
return $http.get(
url: 'https://my.backend.com/api/jokes',
params:
'jokeId': '5',
,
headers:
'Authorization': 'Bearer '+ $scope.myOAuthToken
);
但我想弄清楚如何通过 $resource 传递这个,这里有一些伪代码不起作用:
...
.factory('myFactory',
['$resource',
function($resource)
return
jokes: $resource('https://my.backend.com/api/jokes', null,
query:
method: 'GET'
)
;
]
);
...
return myFactory.jokes.query(
'jokeId': '5',
'headers':
'Authorization': 'Bearer '+ $scope.myOAuthToken
);
如何将标头即时传递给 angularjs 的 $resource?
【问题讨论】:
【参考方案1】:我认为这不能按照您尝试的方式完成,因为配置对象在操作方法上不可用。但是动作配置方法有它。因此,您可以做的是,而不是直接返回资源,而是创建一个以授权令牌为参数的函数,然后构造资源并返回。
return
jokes: function (token)
return $resource('https://my.backend.com/api/jokes', null,
query:
method: 'GET',
headers:
'Authorization': 'Bearer ' + token
)
;
然后调用服务函数为:
myFactory.jokes($scope.myOAuthToken).query('jokeId': '5');
【讨论】:
我试过了,效果很好!谢谢@Chanermani!示例代码:sample.factory('Restricted', ['$resource', function($resource) return createRestrictedResource: function(token) return $resource('/api/v1/restricted', null, query: headers: 'Authorization': 'Bearer ' + token); ]);
以上是关于如何将标头动态传递给 angularjs 的 $resource的主要内容,如果未能解决你的问题,请参考以下文章
如何将参数和标头传递给 aiohttp ClientSession
如何通过 AngularJS 传递 JsonWebToken(JWT)