使用Restangular和ngResource的区别是什么
Restangular和ngResource的主要区别。
- Restangular使用promise(承诺)来代替对$resource这样的对象进行 “神奇 “的填充(promise代表一个操作的最终结果。你将使用promise来指定当操作成功或失败时要尝试什么)。
- Restangular对尾部斜线、URL内的附加:、转义信息、只期望得到列表的数组等都没有问题。
- Restangular支持所有的HTTP方法,而$resource只支持 “GET”、”POST”、”PUT”、”DELETE”。
- Restangular支持盒子里的Etag。你不需要做任何事情。ETags和If-None-Match将在你的所有请求中得到利用。
- 在Restangular中,如果你从服务器上收到一些以链接为特征的项目,你就会用它来询问服务器,而不是手动写URL。
- 每次你想尝试一个邀请,你就会使用Restangular返回的东西在干草中滚动。你不会为此创建一个替换对象。但是,在使用resource时,你必须为每个请求创建一个resource对象。
- 通过$resource,你想写下URL模板。在Restangular中,你不写任何URL。你只写你想获取的资源的名称,就是这样。
- 如果你有嵌套的RESTful资源,Restangular可以为你处理。你不需要知道URL、路径或任何东西来尝试你想要的所有HTTP操作。
// Restangular returns promises
Restangular.all('users').getList() // GET: /users
.then(function (users) {
// Returns an inventory of users
// First Restangular obj in list: { id: 123 }
scope.user = users[0];
})
// code
// Restangular objects are self-aware and
// skills to form their own RESTful requests
// GET: /users/123/carsscope.user.getList('cars');
// You'll also use your own custom methods
// on Restangular objects
// POST: /users/123/sendMessage
scope.user.sendMessage();
// Chain methods together to simply
// build complex requestsscope.user.one('messages', 123)
.one('from', 123).getList('unread');
// GET: /users/123/messages/123/from/123/unread
简而言之,我们会说,除了额外的功能,因此基于承诺的方法,Restangular还可以处理你所有的URL,以便你不需要了解它们。
Restangular.one("users", 123).get().then(function(user) {
scope.user = user;
});
// code
// Automatically does the request to /users/123/cars
// because it remembers during which object you're asking it.scope.user.getList('cars')