header不能处理angular $ resource

时间:2016-07-13 17:01:55

标签: angularjs angular-resource

在我的角度应用中,我想使用angular custom header。我使用以下代码::

Angular Factory

angular.module('app').factory('UserAPI', ['$resource', 'session',   function($resource, session) {
   var mainUrl = 'http://localhost:8006/dev' + '/users';
   return {
      getService : function() {
        var token = session.getToken();
        console.log(token); //token is printed here
        return $resource(mainUrl, { }, {
           getData: {
                method: 'GET',
                url: mainUrl + '/:userId/dashboard',
                isArray: true,
                headers: { 'Token': token }
            }
         });
      }
   }
}]);

角度控制器

angular.module('app').controller('UserCtrl', ['$scope', 'UserAPI',  function($scope, UserAPI) {

    var user = UserAPI.getService();

    user.getData({ userId: 'some-user-id' }, {}, function(res) {

    }, function(err) {

    });
}]);

当我拨打电话user.getUser(......)时,会生成一个网址,如 GET :: http://localhost:8006/dev/user/some-user-id/dashboard,而不是 GET :: {{1我的意思是api调用时缺少令牌,虽然我使用http://localhost:8006/dev/user/some-user-id/dashboard?token=SomeVeryLongToken但仍有问题。

我该如何解决这个问题?

NB headers: { 'Token': token }        "angular": "^1.4.0",

2 个答案:

答案 0 :(得分:0)

您将令牌添加为请求标头,而不是查询字符串中的属性。使用第二个(在您的示例中为空)对象添加参数,或直接在控制器中添加它们:

user.getUser({token: 'sometoken'}, {}, function(res) {

}, function(err) {

});

答案 1 :(得分:0)

headers: { 'Token': token }更改为params: { 'token': token }