📜  在ngResource上使用Restangular有什么区别?

📅  最后修改于: 2021-05-13 19:06:32             🧑  作者: Mango

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')