Angularjs restanglar中的.all()和.one()有什么区别?

Angularjs restanglar中的.all()和.one()有什么区别?,angularjs,restangular,Angularjs,Restangular,这两者有什么区别?两者似乎都可以访问/检索用户 Restangular.one('users').getList().then(function(users) { // do something with users }); Restangular.all('users').getList().then(function(users) { // do something with users }); 我知道你可以做一个('users',123),它将检索/users/123,

这两者有什么区别?两者似乎都可以访问/检索用户

Restangular.one('users').getList().then(function(users) {
    // do something with users
});

Restangular.all('users').getList().then(function(users) {
    // do something with users
});
我知道你可以做一个('users',123),它将检索/users/123,但是没有第二个参数,它似乎是一样的。在这种情况下,为什么不只使用一个方法?

函数的
one()
还有第二个参数接受id,例如
.one('users',1)

  • one('users',1).get()
    转换为
    /users/1
  • all('users')。getList()
    转换为
    /users

all()
不同,
one()
通常不带参数与
.getList()
一起使用。但是,如果您要调用
.one('users',1).getList('emails')
.one('users',1).all('emails').getList()
,那么您会向
/users/1/emails

发出GET请求,我猜它们是用来表达您将要做的意图的。我认为这是构建url的一种方式,表示您是访问整个资源还是访问特定资源

最后,他们将构建并执行GET请求,但因为您执行了GET并检索了一些数据,这并不意味着应该以这种方式使用它

示例摘自

getList可以双向调用。如果在元素1中调用, 然后它需要一个子元素来访问集合。否则, 获取集合。因此,以下内容是相同的:

如您所见,将一个(地点)称为123更具表现力。将所有(场馆)称为123更具表现力,以理解您只希望场馆位于123区域/地点

以下url可能会对您有所帮助:


我最近发现了这些方法之间的差异。是的,他们都会发出相同的get请求,但是您得到的结果可能会让您感到惊讶(就像他们让我感到惊讶一样)

假设我们有一个API方法/用户,该方法/用户返回的不是严格意义上的数组,而是如下所示:

{
   "result": [{...}]
}
因此,数组作为响应对象的某个属性的值返回。在本例中,get()和getList()的工作方式不同。此代码运行良好:

Restangular.get('users').then(function (response) {...});
您的响应处理程序在收到响应后被调用。但这个代码似乎不起作用:

Restangular.all('users').getList().then(function (response) {...});
不调用响应处理程序,尽管请求已完成,状态代码为200,响应为非空。浏览器控制台不显示任何错误,网络监视器显示请求成功

我已经用Restangular 1.5.2测试过了,所以可能在新版本中已经修复了

Restangular.all('users').getList().then(function (response) {...});