web-dev-qa-db-ja.com

Angularjsのヘッダーをその場で$ 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にその場でヘッダーを渡すにはどうすればよいですか?

17
pulkitsinghal

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'});
34
Chandermani