Как передать заголовки "на лету" в $resource для 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
}
});
Как передать заголовки "на лету" в $resource для angularjs?
Ответы
Ответ 1
Я не думаю, что это можно сделать так, как вы пытаетесь, поскольку объект конфигурации недоступен в методе действий. Но метод действия имеет его. Так что вы можете сделать, а не сразу возвращать ресурс, создать функцию, которая принимает параметр токен auth, а затем построить ресурс и вернуться.
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'});