Angularjs 是否可以使用多个查询参数执行重新启动的GET?
我一直在尝试使用多个查询参数(用于简单的分页)执行重新启动语言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: {..
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,则没有其他解决方案。你也许认为你不应该这样做是对的,因为这似乎不符合你的目的。看见