使用Restangular over ngResource有什么好处?

Dan*_*nze 133 javascript angularjs ngresource restangular

ngResource已经似乎很简单,以落实事情...

使用Restangular over ngResource有什么优点/缺点?

1.1.3 $resource将返回promises并且可以使用最新的PR提交来实现.是否会提供未来支持$resource以支持Restangular所做的其他动词?如果发生这种情况,Restangular似乎会消失并变得不可靠.

mgo*_*nto 232

我是Restangular的创造者.

我在README上创建了一个与$ resource有区别的部分.你可以在这里查看它们https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

无论如何,总而言之,除了附加功能和基于承诺的方法之外,我们的想法是Restangular还可以处理您的所有URL,这样您就不必了解它们.

假设你有类似汽车的东西:/ users/123/cars/456

在$ resource中,您必须手动构造该URL,并且还必须手动构造$ resource对象.Restangular通过"记住"URL来帮助您.

所以,如果你在某个地方做

Restangular.one("users", 123).get().then(function(user) {
  $scope.user = user;
});

// Some other code

//Automatically does the request to /users/123/cars as it remembers in which object you're asking it.
$scope.user.getList('cars')
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!

  • +1跳入此内容.谁更好地解释那个自己建造它的人哈哈! (45认同)
  • `.one('users',123)`或多或少"知道"关于你的URL而不是''/ users/123'`?(只是在玩魔鬼代言人)这似乎只是'"/富/ 123 /酒吧/ 123'`比'.一是容易多了("富",123).一('酒吧’,123)`. (27认同)
  • 这个想法是,在某些时候,你只知道实体名称和id.所以你先做一些事情`var user = Restangular.one('users',123).getList()`.稍后在代码或其他控制器中,你执行`user.getList('buildings')`.在这里,你只知道下一个类型是建筑物,但它查询`/ users/123/buildings /`,所以你不必一直知道完整的URL (5认同)
  • 好但是片面的.关于最近增强的"$ resource",在这个帖子中已经提出了Restangular可能的"无关紧要" - 我并不暗示它会变得无关紧要,只是它被提到了.我们应该注意哪些事实上的缺点或陷阱? (3认同)
  • 用更新的ngresource版本过时的README是不是很多?(即/使用promises,通过transformResponse装饰响应对象) (3认同)

小智 8

我发现Restangular的RequestInterceptor非常方便在发出Request之前从对象中删除一些字段.我目前正在使用的大多数REST Web服务不希望PUT请求中的对象数据中的id,例如,仅在url中.通常,他们不期望PUT无法更新的额外数据字段(如id,或通过设置标题等生成的slug).我发现这对Restangular来说很简单,而我还没弄清楚如何以干净的方式使用$ resource,但我确信它可能以某种方式.

显然,人们也可以改变web服务,只是忽略那些额外的字段,但这并不总是可行的.