Получить заголовки ответов в Restangular getList

мой API Rails записывает данные разбивки на страницы в заголовках ответов следующим образом:

X-Pagination {"total":332,"total_pages":12,"first_page":true,"last_page":false,"previous_page":null,"next_page":2,"out_of_bounds":false,"offset":0}

Мне нужно получить доступ к этому значению во время вызова getList(), чтобы отобразить paginator и так далее.

Я видел, что заголовки пусты.

Как я могу решить эту проблему?

Спасибо, Стефано


person Stefano Mancini    schedule 14.03.2014    source источник
comment
Вы хотите установить его в заголовок?   -  person Poyraz Yilmaz    schedule 14.03.2014


Ответы (3)


Вы можете использовать метод setFullResponse, он вернет все данные ответа. Я полагаю, вам нужен полный ответ в качестве исключения, поэтому просто настройте Restangular локально, например:

var rest = Restangular.withConfig(function(RestangularConfigurer) {
    RestangularConfigurer.setFullResponse(true);
});
rest.getList().then(function(response) {
    console.log(response.headers('X-Pagination'));
});
person Community    schedule 14.03.2014
comment
здесь важно упомянуть, что вы должны предоставить Access-Control-Expose-Headers: с сервера - person Stepan Suvorov; 28.09.2015

Чтобы добавить ответ 2j2e, я создал фабрику и использую ее следующим образом:

angular.module('myApp')
  .factory('RestFullResponse', ['Restangular', function (Restangular) {
    return Restangular.withConfig(function (RestangularConfigurer) {
      RestangularConfigurer.setFullResponse(true);
    });
  }]);

И в контроллере:

angular.module('myApp')
  .controller('PikachuCtrl', function ($scope, Restangular, RestFullResponse) {

    var ideas = RestFullResponse.all('Pikachus');

    ideas.getList().then(function(response){
          $scope.Pikachus = response.data;
          var XPagination = response.headers('X-Pagination');
        };
})
person Urigo    schedule 21.04.2014
comment
имя переменной с дефисом?? - person Pavel Dubinin; 20.06.2014

Если вы хотите прочитать только определенные заголовки ответа и вам не нужны полные ответы с заголовком во всех запросах Restangular, вы можете найти заголовок в перехватчик ответа и добавьте его в ответ.

app.config(function(RestangularProvider) {
  RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
    var pagination;
    if (pagination = response.headers('X-Pagination')) {
      data.paginationData= pagination;
    }
    return data;
  });
});
person fracz    schedule 21.07.2016
comment
Не работает для меня. Возвращает ноль, хотя я вижу заголовок в консоли Chrome Dev. - person HK1; 05.06.2017