与 ngResource 相比,使用 Restangular 的优势是什么?

ngResource似乎已经非常简单地实现事情...

ngResource上使用Restangular的优点/缺点是什么?

1.1.3 将返回承诺,并可以使用最新的 PR 提交进行暗示。将来是否会提供支持以支持 Restangular 所做的其他动词?如果发生这种情况,Restangular似乎会消失并变得无关紧要。$resource$resource


答案 1

我是Restangular的创造者。

我在自述文件上创建了一个部分,其中包含与$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')

希望这有帮助!


答案 2

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

显然,也可以将Web服务更改为忽略这些额外的字段,但这并不总是可能的。