如果我所做的只是从API(不是完整的CRUD)发出基本的GET请求,那么使用$ http或$ resource更好吗?
我看到$ resource使用了引擎盖下的$ http,那么它是否会过度杀伤?使用$ resource而不是$ http编写的代码更精简,特别是当我添加额外的GET请求时。下面是我使用两者的例子。试图确定哪一个更好地继续前进。我读到的所有内容似乎都指向了两个方向。是否有全面接受的共识?
$资源
/* Data Factory */
myApp.factory('myServ', ['$resource', '$cacheFactory',
function($resource) {
return {
Events: $resource('api/v1/events/:slug', {}, {slug: '@slug', cache: true, method: 'get'})
};
}]);
$ HTTP:
/* Data Factory */
angular.module('myFactory', [])
.factory('eventRepo', function($http) {
return {
Events: function(callback) {
$http({
method: 'GET',
url: 'api/v1/events',
cache: true
}).success(callback);
}
};
});
答案 0 :(得分:0)
没有总体的共识,简短的答案取决于你的需要......
我发现随着我们的AngularJs应用程序的增长,服务消耗变得更加复杂。一个可扩展且灵活的良好可重用方法始终是一个很好的经验法则。对服务架构的良好投资在使应用程序更易于实现,维护和单元测试方面有很长的路要走。我建议您查看John Papa的实施服务风格指南。
https://github.com/johnpapa/angular-styleguide
http://sauceio.com/index.php/2014/07/angularjs-data-models-http-vs-resource-vs-restangular/
$ http 内置于Angular中,因此不需要在外部依赖项中加载额外的开销。 $ http适用于快速检索不需要任何特定结构或复杂行为的服务器端数据。为简单起见,最好直接注入控制器。
$ resouce 适用于比$ http稍微复杂的情况。当你拥有相当结构化的数据时很好,但是你计划在交付API响应之前在服务器端执行大部分的运算,关系和其他操作。客户端的任何自定义行为都需要很多样板。