【问题标题】:How to pass headers on the fly to $resource for angularjs如何将标头动态传递给 angularjs 的 $resource
【发布时间】: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?

【问题讨论】:

    标签: angularjs ngresource


    【解决方案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}}}); } } }]);
    猜你喜欢
    • 2016-02-14
    • 1970-01-01
    • 2015-06-09
    • 2015-11-29
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多