ngResource
用...实现东西似乎已经很简单了
在ngResource上使用Restangular有什么优点/缺点?
1.1.3$resource
将返回承诺,并且可以使用latest PR commit来实现。将来是否会提供支持$resource
以支持 Restangular 所做的其他动词?如果发生这种情况,Restangular 似乎会消失并变得无关紧要。
ngResource
用...实现东西似乎已经很简单了
在ngResource上使用Restangular有什么优点/缺点?
1.1.3$resource
将返回承诺,并且可以使用latest PR commit来实现。将来是否会提供支持$resource
以支持 Restangular 所做的其他动词?如果发生这种情况,Restangular 似乎会消失并变得无关紧要。
我是 Restangular 的创造者。
我在 README 上创建了一个与 $resource 不同的部分。你可以在这里查看它们https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource
无论如何,总而言之,除了附加功能和基于 Promise 的方法之外,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')
希望这可以帮助!
我发现 Restangular 的 RequestInterceptor 在发出请求之前从对象中删除一些字段非常方便。我目前正在使用的大多数 REST Web 服务并不期望 PUT 请求中的对象数据中的 id,例如,只是在 url 中。通常,他们不会期望 PUT 无法更新的额外数据字段(例如 id 或通过设置标题等生成的 slug)。我发现这对于 Restangular 来说很简单,而我还没有弄清楚如何以一种干净的方式使用 $resource 来做到这一点,但我相信它可能以某种方式实现。
显然,也可以更改 web 服务以忽略那些额外的字段,但这并不总是可能的。
ngResource 在最新的稳定版本(当前为 1.0.6)中不返回承诺。此外,看起来 Restangular 暴露了比 ngResource 更多的动词(它暴露了 PUT、OPTIONS、PATCH 等)。
如果您不需要额外的动词并且在 AngularJS 的不稳定分支上(其中包括对 ngResource 的承诺),我认为没有任何主要原因在 ngResource 上使用 Restangular。
使用任何你觉得舒服的东西。
作为对上述答案的跟进,以及像我这样对这些想法感兴趣的新读者:
“如果发生这种情况,Restangular 似乎会消失并变得无关紧要。”
“当这个人放弃对 Restangular 的支持时,三个月后会发生什么,因为谷歌的 ngResource 赶上了它所缺少的所有功能。”
在我看来,开源库生存的唯一保证是围绕它建立的社区。一个最好的例子是mariaDB和WebScaleSQL,它们都是作为伟大的关系数据库管理系统 MySQL 的一个不断增长的分支而诞生的。
在撰写本文时,Restangularhaving 6699 stars and 727 forks
现在正在向 Restangular 2.0 发展,旨在支持 angularJs 2.0 和 ES6。
对于您希望以最少的支持永远运行的快速简单网站,我会使用内置的角度 http HttpClient,无论我在做什么我喜欢的项目,我正在享受并尝试使用所有很酷的技术我将使用Ngx-Restangular
您还应该知道,ngx-restangular 仅顾名思义与 RESTful 服务一起使用。因此,对于提供 SOAP 的服务,您将无法使用Ngx-Restangular
话虽如此,我大部分时间都会使用 ngx-restangular,因为我总是尝试从事我觉得很酷的项目并尝试实施我认为最好的项目。
祝你好运!