如何动态地将标题传递给angularjs的$resource
现在,我所知道的在angularjs调用的头中动态设置令牌的唯一方法是通过如何动态地将标题传递给angularjs的$resource,angularjs,ngresource,Angularjs,Ngresource,现在,我所知道的在angularjs调用的头中动态设置令牌的唯一方法是通过$http,如下所示: return $http.get({ url: 'https://my.backend.com/api/jokes', params: { 'jokeId': '5', }, headers: { 'Authorization': 'Bearer '+ $scope.myOAuthToken } }); 但我想弄清楚如何通过$resource传递,下面是一些不起
$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?我认为这无法通过您尝试的方式实现,因为action方法上没有配置对象。但是action-config方法有它。因此,您可以做的不是直接返回资源,而是创建一个函数,该函数接受参数授权令牌,然后构造资源并返回
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':'bearrier'+token}}}});}})代码>