Javascript 设计AngularJS服务的更好方法

Javascript 设计AngularJS服务的更好方法,javascript,rest,angularjs,angularjs-service,Javascript,Rest,Angularjs,Angularjs Service,我正在编写一个AngularJS客户端应用程序,它将与REST服务器交互 为了管理客户机/服务器交互,我使用了抽象。 实际上,我把每一个资源都作为一个单独的资源来编写,并且只将它注入到将要使用它的控制器中 我已经开始使用开发,因此在我的separedservices.js文件中,我得到了越来越多的服务: angular.module('testReqService', ['ngResource']). factory('TestReq', function($resource){

我正在编写一个AngularJS客户端应用程序,它将与REST服务器交互

为了管理客户机/服务器交互,我使用了抽象。 实际上,我把每一个资源都作为一个单独的资源来编写,并且只将它注入到将要使用它的控制器中

我已经开始使用开发,因此在我的separed
services.js
文件中,我得到了越来越多的服务:

angular.module('testReqService', ['ngResource']).
    factory('TestReq', function($resource){
    return $resource('http://test-url.com/api/test', {}, {});
});
angular.module('registerService', ['ngResource']).
    factory('Register', function($resource){
    return $resource('http://test-url.com/api/user/new', {}, {});
});
//More services here...
一切都很好,但我想知道这是否是最好的方法


因此,最好为不同的
REST
请求编写单独的服务,并只将它们注入需要它的控制器中,或者更好的方法是为每个请求编写具有不同方法和URL的单个服务?

我更喜欢第二种方法:

var resources = angular.module("myapp.resources", ['ngResource']);

resources.factory('Constants', [
    function() {
        return {
            RESOURCE_URL: "http://www.example.com/rest"
        }
    }
]);

resources.factory('Rest', ['Constants', '$resource', function(C, $resource) {
    return {
        Users: $resource(C.RESOURCE_URL + '/users/:id', {
            id: '@id',
        }, {})
        , Posts: $resource(C.RESOURCE_URL + '/posts/:user', {
              user: '@'
        }, {})
    }
}]);
当您有多个资源时,管理控制器中的所有依赖项会变得非常烦人。这样,你所要做的就是注入一个。在我看来,阅读控制器时也更容易理解:

$scope.user = Rest.Users.get({id: 1});
这是可以理解的

$scope.user = Users.get({id: 1});

我通常使用相关函数的子集编写单个服务。这只是我的想法,不管怎样,我对这个问题很感兴趣。我也喜欢这种方法,更容易阅读,尤其是当你开始添加越来越多的内容时。我也喜欢这种方法。我想我将使用混合的方法,尝试将所有相关资源合并到同一个服务中。