仅在API上使用GET请求 - $ http或$ resource

时间:2015-06-01 21:44:05

标签: angularjs angular-resource angular-http

如果我所做的只是从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);
            }
        };
    });

1 个答案:

答案 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响应之前在服务器端执行大部分的运算,关系和其他操作。客户端的任何自定义行为都需要很多样板。