是否可以使用多个查询参数执行Restangular GET?

时间:2015-04-29 14:00:56

标签: angularjs restangular

我一直在尝试使用多个查询参数执行Restangular GET(对于简单的分页)而且似乎不可能 - 至少我正在尝试做什么。这是我正在尝试做的事情:

Restangular.all('elevation').get({ pageParam: page, pageSizeParam: pageSize }).then(function(data) {
    console.log(data);
});

预期的响应看起来像:

{ totalRecords: 233, elevations: {...} }

这不起作用,导致以下结果:

  

获取http://localhost:24287/elevation/[object%20Object] 404(未找到)

我也尝试使用customGET,这会产生与上述相同的问题。

我实际上能够传递多个查询参数的唯一方法是使用getList。不幸的是,在使用getList时,不出所料地引发了以下错误:

  

错误:getList的响应应该是一个数组,而不是一个对象或其他东西

要解决此问题,Restangular文档在My response is actually wrapped with some metadata. How do I get the data in that case?部分中说明我需要使用addResponseInterceptor,我已经这样做了:

 RestangularProvider.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
  var newResponse = [];
  if(response.data.totalRecords !== undefined) {
    newResponse.elevationData= {};
    newResponse.elevationData.totalRecords = response.data.totalRecords;
    newResponse.elevationData.elevations = response.data.elevations;
  }
  return newResponse;
});

跳过篮球之后,这个错综复杂的解决方案确实有效。有没有一种简单的方法可以简单地使用多个查询参数调用Restangular的get并获取返回的对象?

此时,将Restangular排除在外并简单地使用$ http服务会更容易:

$http.get('http://localhost:24287/elevation?page=' + page + '&pageSize=' + pageSize).then(function(result) {
    console.log(result.data.totalRecords);
    console.log(result.data.elevations);
});

虽然我真的想找出一个更好的方法来使用Restangular。

任何想法都将不胜感激!谢谢!

0 个答案:

没有答案