J'appelle essentiellement des requêtes get
comme ceci:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}).$promise.then(function(data){
console.log(data)
})
Cela fonctionne bien .. mais comment obtenir les en-têtes de réponse?
Vous pouvez utiliser l'action transformResponse définie ici cela vous permettrait d'ajouter les en-têtes
$resource('/', {}, {
get: {
method: 'GET',
transformResponse: function(data, headers){
response = {}
response.data = data;
response.headers = headers();
return response;
}
}
Voir un exemple de travail ici JSFiddle
La réponse de @ Martin fonctionne pour les mêmes demandes de domaine. Je voudrais donc ajouter à sa réponse que si vous utilisez des demandes interdomaines, vous devrez ajouter un autre en-tête avec Access-Control-Expose-Headers: X-Blah, X-Bla
avec le Access-Control-Allow-Origin:*
entête.
où X-Blah
et X-Bla
sont des en-têtes personnalisés.
De plus, vous n'avez pas besoin d'utiliser la demande de transformation pour obtenir les en-têtes. Vous pouvez utiliser ce code:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}, function(data, headersFun){
console.log(data, headersFun());
})
Voir ce violon. J'espère que cela t'aides !!!
Vieille question, mais je pense que cela vaut la peine d'être mentionné pour la future référence. Il existe une solution "officielle" pour cela dans la documentation angular:
Il convient de noter que le rappel de réussite pour get, query et d'autres méthodes est transmis dans la réponse provenant du serveur ainsi que dans la fonction getter d'en-tête $ http, de sorte que l'on pourrait réécrire l'exemple ci-dessus et accéder aux en-têtes http comme suit:
var User = $resource('/user/:userId', {userId:'@id'});
var users = User.query({}, function(users, responseHeaders){
// ...
console.log(responseHeaders('x-app-pagination-current-page'));
});
(code des documents légèrement mis à jour pour plus de clarté)
Pour les demandes CORS, exposer les en-têtes comme mentionné dans les autres réponses est requis.