Restangular和ngResource之间的主要区别:
- Restangular并没有像$ resource这样“神奇”地填充对象,而是使用了promises(promise表示操作的最终结果。您将使用promise指定操作成功或失败时要尝试的操作)。
- Restangular的斜杠没有问题,其他:URL内,转义信息,仅期望用于获取列表的数组等。
- Restangular支持所有HTTP方法,而$ resource仅支持’GET’,’POST’,’PUT’,’DELETE’。
- 矩形支持盒子的Etag。您无需执行任何操作。 ETag和If-None-Match将在您的所有请求中使用。
- 在Restangular中,如果您从服务器接收到某些具有指向自身链接的项目,则将使用它来询问服务器,而不是手动编写URL。
- 每次您想要发出邀请时,都将使用Restangular返回的东西来翻滚干草。您无法为此创建替换对象。但是,在使用$ resource时,您必须为每个请求创建一个$ resource对象。
- 使用$ resource,您想写下URL模板。在Restangular中,您不编写任何URL。您只需写下要获取的资源的名称即可。
- 如果您拥有嵌套的RESTful资源,那么Restangular可以为您处理它们。您无需知道URL,路径或任何尝试进行所有HTTP操作的方法。
Javascript
// 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/cars
$scope.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 requests
$scope.user.one('messages', 123)
.one('from', 123).getList('unread');
// GET: /users/123/messages/123/from/123/unread
Javascript
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')
简而言之,我们将说,除了额外的功能以及基于承诺的方法之外,Restangular还可以处理您的所有URL,从而您无需了解它们。
Java脚本
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')