Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AngularJS: Creating multiple factories for every endpoint?

following some examples, it appears that we can inject a factory which would contain an endpoint for a rest service like so

services.factory('Recipe', ['$resource',      function($resource) {         return $resource('/recipes/:id', {id: '@id'}); }]); 

This looks great, but imagine I have other endpoints i.e. /users/:id, and /groups/:id, as you can imagine the number of different endpoints are going to increase.

So it is good practice to have a different factory for each endpoint so having ..

services.factory('Recipe', ['$resource',............  services.factory('Users', ['$resource',.............  services.factory('Groups', ['$resource',............... 

Or is there another recommended way ?

I really don't see an issue with it but its going to force me to create a lot of factories just for dealing with the different endpoints.

Any help or guidance really apprecaited

Thanks

like image 838
Martin Avatar asked Jun 21 '13 10:06

Martin


1 Answers

It's a matter of preference.

But nothing prevents you from consolidating all your resources inside one factory as in:

services.factory('Api', ['$resource',  function($resource) {   return {     Recipe: $resource('/recipes/:id', {id: '@id'}),     Users:  $resource('/users/:id', {id: '@id'}),     Group:  $resource('/groups/:id', {id: '@id'})   }; }]);  function myCtrl($scope, Api){   $scope.recipe = Api.Recipe.get({id: 1});   $scope.users = Api.Users.query();   ... } 
like image 81
Stewie Avatar answered Sep 20 '22 05:09

Stewie