Как получить доступ к заголовкам ответов с использованием $resource в Angular?
Я в основном вызываю get
запросы следующим образом:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}).$promise.then(function(data){
console.log(data)
})
Это отлично работает... но как мне получить заголовки ответов?
Ответы
Ответ 1
Вы можете использовать действие transformResponse указанное здесь, это позволит добавлять заголовки
$resource('/', {}, {
get: {
method: 'GET',
transformResponse: function(data, headers){
response = {}
response.data = data;
response.headers = headers();
return response;
}
}
См. рабочий пример здесь JSFiddle
Ответ 2
Ответ на @Martin работает для тех же запросов домена. Поэтому я хотел бы добавить к его ответу, что если вы используете запросы кросс-домена, вам придется добавить еще один заголовок с Access-Control-Expose-Headers: X-Blah, X-Bla
вместе с заголовком Access-Control-Allow-Origin:*
.
где X-Blah
и X-Bla
являются настраиваемыми заголовками.
Также вам не нужно использовать запрос преобразования для получения заголовков. Вы можете использовать этот код:
var resource = $resource('/api/v1/categories/:id')
resource.get({id: 1}, function(data, headersFun){
console.log(data, headersFun());
})
Смотрите этот скрипт.
Надеюсь, это поможет!!!
Ответ 3
Старый вопрос, но я думаю, что стоит упомянуть о будущей ссылке.
В документации angular есть "официальное" решение:
Стоит отметить, что обратный вызов успеха для get, query и других методы передаются в ответ, который также поступает с сервера как функция HTTP-заголовка getter, поэтому можно переписать выше пример и получить доступ к http-заголовкам как:
var User = $resource('/user/:userId', {userId:'@id'});
var users = User.query({}, function(users, responseHeaders){
// ...
console.log(responseHeaders('x-app-pagination-current-page'));
});
(код из документов слегка обновлен для ясности)
Для запросов CORS требуется просмотр заголовков, указанных в других ответах.