在Restangular getList中获取响应标头

时间:2014-03-14 11:28:10

标签: pagination restangular

我的Rails API以这种方式在响应头中使用分页数据:

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()调用期间访问此值以显示分页器等。

我看到标题是空的。

我该如何解决这个问题?

谢谢,Stefano

3 个答案:

答案 0 :(得分:9)

您可以使用setFullResponse方法返回所有响应数据。我想你需要一个完整的响应作为例外,所以只需在本地配置Restangular,如:

var rest = Restangular.withConfig(function(RestangularConfigurer) {
    RestangularConfigurer.setFullResponse(true);
});
rest.getList().then(function(response) {
    console.log(response.headers('X-Pagination'));
});

答案 1 :(得分:4)

要添加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');
        };
})

答案 2 :(得分:0)

如果您只想阅读响应的特定标题,并且在所有Restangular请求中不需要包含标题的完整响应,则可以在response interceptor中查找标题并将其添加到响应中。 / p>

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