Atr*_*opo 8 javascript rest angularjs angularjs-service
我正在编写一个与REST服务器交互的AngularJS客户端应用程序.
为了管理客户端/服务器交互,我正在使用$ resource抽象.实际上我将每个资源都写成一个独立的服务,只将其注入到将要使用它的控制器中.
我已经开始使用angularjs-seed开发了,所以在我的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...
Run Code Online (Sandbox Code Playgroud)
一切都很好,但我想知道这是不是最好的方法.
因此,最好为不同的REST请求编写单独的服务,并将它们仅注入需要它的控制器中,或者更好的方法是使用不同的方法和URL为每个请求编写单个服务?
Bet*_*aba 12
我更喜欢第二种方法:
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: '@'
}, {})
}
}]);
Run Code Online (Sandbox Code Playgroud)
当您拥有多个资源时,管理控制器中的所有依赖项会变得非常烦人.这样,你所要做的只是注入一个.在我看来,在阅读控制器时也更容易理解:
$scope.user = Rest.Users.get({id: 1});
Run Code Online (Sandbox Code Playgroud)
更容易理解的是
$scope.user = Users.get({id: 1});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1200 次 |
| 最近记录: |