如何动态地将标题传递给angularjs的$resource

如何动态地将标题传递给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传递,下面是一些不起

现在,我所知道的在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?

我认为这无法通过您尝试的方式实现,因为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}}}});}})