我一直在尝试使用多个查询参数执行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。
任何想法都将不胜感激!谢谢!