133 votes

Quel est l'avantage d'utiliser Restangular plutôt que ngResource ?

ngResource déjà semble vraiment simple pour mettre en œuvre des choses avec ...

Quels sont les avantages/inconvénients de l'utilisation de Restangulaire plus ngResource ?

1.1.3 $resource renvoie des promesses et peut être mis en œuvre en utilisant Dernier commit PR . Un soutien sera-t-il offert à l'avenir aux $resource pour soutenir des verbes supplémentaires que Restangular fait ? Et si cela se produit, Restangular semble disparaître et devenir irrecevable.

232voto

mgonto Points 3489

Je suis le créateur de Restangular.

J'ai créé une section dans le README avec les différences par rapport à $resource. Vous pouvez les consulter ici https://github.com/mgonto/restangular/blob/master/README.md#differences-with-resource

En résumé, outre les fonctionnalités supplémentaires et l'approche basée sur les promesses, l'idée est que Restangular peut également gérer toutes vos URL, de sorte que vous n'avez rien à savoir à leur sujet.

Supposons que vous ayez quelque chose comme ceci pour les voitures : /users/123/cars/456

Dans $resource, vous devrez construire cette URL manuellement et vous devrez également construire l'objet $resource manuellement. Restangular vous aide dans cette tâche en "mémorisant" les URLs.

Donc, si vous le faites dans un endroit

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

J'espère que cela vous aidera !

8voto

awdng Points 61

J'ai trouvé le RequestInterceptor de Restangular très pratique pour supprimer certains champs de l'objet avant de faire la requête. La plupart des webservices REST avec lesquels je travaille actuellement n'attendent pas l'id dans les données de l'objet dans une requête PUT par exemple, juste dans l'url. En général, ils n'attendent pas de champs de données supplémentaires qui ne peuvent pas être mis à jour par PUT (comme l'identifiant, ou un slug qui est généré en définissant le titre, etc.) J'ai trouvé cela simple avec Restangular, mais je n'ai pas trouvé comment le faire avec $resource de manière propre, mais je suis sûr que c'est possible d'une manière ou d'une autre.

Il est évident que l'on peut aussi modifier le webservice pour qu'il ignore ces champs supplémentaires, mais ce n'est pas toujours possible.

3voto

rtcherry Points 2550

NgResource ne renvoie pas de promesses dans la dernière version stable (actuellement 1.0.6). De plus, il semble que Restangular expose plus de verbes que ngResource (il expose PUT, OPTIONS, PATCH, etc).

Si vous n'avez pas besoin des verbes supplémentaires et que vous êtes sur la branche instable d'AngularJS (qui inclut des promesses pour ngResource), je ne vois pas de raison majeure d'utiliser Restangular plutôt que ngResource.

Utilisez ce qui vous convient le mieux.

1voto

Salem Ouerdani Points 5746

Pour faire suite aux réponses ci-dessus et pour nouveau les lecteurs, comme moi, intéressés par ces réflexions :

"Et si cela se produit, Restangular semble disparaître et ne plus avoir de raison d'être.

"Que se passera-t-il dans trois mois lorsque ce type cessera d'apporter son soutien à Restangular parce que ngResource de Google a rattrapé toutes les fonctionnalités qui lui manquaient."

  • [ posée il y a 2 ans ]

À mon avis, le seulement garantie au survivant d'une open-source la bibliothèque est la communauté qui s'est construite autour d'elle. un bon exemple serait mariaDB y WebScaleSQL qui sont tous deux nés comme une fourchette croissante du grand système de gestion de bases de données relationnelles MySQL.

À l'heure où nous écrivons ces lignes, Restangular having 6699 stars and 727 forks passe maintenant à Restangular 2.0 qui est censé supporter angularJs 2.0 et ES6.

0voto

Nour Lababidi Points 152

Pour un site web simple et rapide que vous voulez faire fonctionner à l'infini avec un minimum de support, j'utiliserais la version intégrée d'angular http. HttpClient Cependant, lorsque je travaille sur un projet que j'aime, que j'apprécie et que j'essaie d'utiliser toutes les technologies cool, j'utiliserai Ngx-Restangulaire

Il faut aussi savoir que ngx-restangular ne fonctionne qu'avec des services RESTful, comme son nom l'indique. Donc pour les services qui fournissent SOAP, vous ne serez pas en mesure d'utiliser Ngx-Restangulaire

https://ngx-restangular.com/

Ceci étant dit J'utiliserais ngx-restangular la plupart du temps. car j'essaie toujours de travailler sur des projets que je trouve intéressants et de mettre en œuvre ce que je pense être le mieux.

Bonne chance !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X