2014-09-10 26 views
15

In questo momento, l'unico modo che conosco per l'impostazione gettoni nelle intestazioni in modo dinamico per una chiamata in angularjs è via $http in questo modo:

return $http.get({ 
    url: 'https://my.backend.com/api/jokes', 
    params: { 
    'jokeId': '5', 
    }, 
    headers: { 
    'Authorization': 'Bearer '+ $scope.myOAuthToken 
    } 
}); 

Ma io voglio per capire come passare questa via $ risorsa, ecco qualche pseudo-codice che non funziona:

... 
.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 
    } 
}); 

Come posso passare le intestazioni al volo a $ risorsa per angularjs?

risposta

31

Non penso che questo possa essere fatto nel modo in cui si sta provando, poiché l'oggetto config non è disponibile sul metodo di azione. Ma il metodo di configurazione azione ce l'ha. Quindi, ciò che puoi fare è, piuttosto che restituire direttamente la risorsa, creare una funzione che accetta un parametro il token auth e quindi costruisce la risorsa e restituisce.

return { 
    jokes: function (token) { 
     return $resource('https://my.backend.com/api/jokes', null, { 
      query: { 
       method: 'GET' 
       headers: { 
        'Authorization': 'Bearer ' + token 
       } 
      } 
     }) 
    } 
}; 

quindi chiamare la funzione di servizio come

myFactory.jokes($scope.myOAuthToken).query({'jokeId': '5'}); 
+2

ho provato, ho lavorato come un fascino! Grazie a @Chanermani! Codice Esempio: 'sample.factory ('Restricted', [ '$ risorse', function ($ risorsa) {{ ritorno createRestrictedResource: function (token) {return $ risorsa ('/ api/v1/limitato' , null, {query: {intestazioni: {'Autorizzazione': 'Bearer' + token}}}); } } }]); ' – prasanthv

Problemi correlati