Angularjs 是否可以使用多个查询参数执行重新启动的GET?

Angularjs 是否可以使用多个查询参数执行重新启动的GET?,angularjs,restangular,Angularjs,Restangular,我一直在尝试使用多个查询参数(用于简单的分页)执行重新启动语言GET,但这似乎是不可能的——至少在我尝试执行的过程中是不可能的。以下是我试图做的: Restangular.all('elevation').get({ pageParam: page, pageSizeParam: pageSize }).then(function(data) { console.log(data); }); 预期的响应如下所示: { totalRecords: 233, elevations: {..

我一直在尝试使用多个查询参数(用于简单的分页)执行重新启动语言GET,但这似乎是不可能的——至少在我尝试执行的过程中是不可能的。以下是我试图做的:

Restangular.all('elevation').get({ pageParam: page, pageSizeParam: pageSize }).then(function(data) {
    console.log(data);
});
预期的响应如下所示:

{ totalRecords: 233, elevations: {...} }
这不起作用,并导致以下情况:

获取404(未找到)

我还试图利用
customGET
,这导致了与上面相同的问题

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

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

为了解决这个问题,重新启动的文档在一节中指出,我需要使用
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;
});
$http.get('http://localhost:24287/elevation?page=' + page + '&pageSize=' + pageSize).then(function(result) {
    console.log(result.data.totalRecords);
    console.log(result.data.elevations);
});
这个复杂的解决方案在跳出圈套之后,事实上确实起了作用。有没有更简单的方法可以简单地使用多个查询参数调用restanglar的
get
,并返回一个对象

在这一点上,将Restangular排除在问题之外并简单地使用$http服务将更容易:

 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;
});
$http.get('http://localhost:24287/elevation?page=' + page + '&pageSize=' + pageSize).then(function(result) {
    console.log(result.data.totalRecords);
    console.log(result.data.elevations);
});
虽然我真的很想找到一个更好的方法来使用Restanglar


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

这非常简单,在没有id的情况下查询ressource URL,甚至使用特定的查询参数,然后返回单个对象,这不是RESTful

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

它确切地告诉了您一个事实:您的查询可能返回一个数组,因为您没有指定唯一的标识符(其他一切都不是唯一的)

在这一点上,将Restangular排除在问题之外并简单地使用$http服务将更容易


确切地说,由于Restangular专注于RESTful资源代理,或者您必须对其进行调整(拦截器、customGET等)

这有助于@页面的按钮。感谢链接,尽管它看起来与文档中的示例基本相同:)。抱歉,伙计,我尝试了。。。我停止使用restangular,开始使用angulars的原生设备,因为它们似乎有更好的文档记录。同意——我自己很快就会朝这个方向前进。Cyril——我并不是只返回一个对象,而是检索一个列表,它只是包装在元数据中(在本例中,总记录数是列表本身的同级项)。我不是在查询唯一的ID,因为我在查找所有对象的列表——在本例中是所有对象的子集——一个页面。我的全部观点是,应该有一种更简单的方法将多个查询参数传递给Restangular.Slashp提供的任何GET方法。我的全部观点是,我认为您不能,因为restanglar专注于restfulapi。您遵循了完全正确的路径,Restangular设计得非常好,它引导您完成了整个过程:1)您首先尝试使用
get
,意识到您的API返回一个json对象,它不允许您添加一些参数,因为它被设计为按id返回一个对象,并且不需要任何查询。2) 您尝试查询
getList
,它告诉您您的API应该返回一个列表,或者需要使用拦截器自定义响应。我应该说,确实没有那么简单。但是如果您确实想使用restanglar,则没有其他解决方案。你也许认为你不应该这样做是对的,因为这似乎不符合你的目的。看见