Javascript 角度-通用图像服务与特定资源(例如,用户、图像、动物)图像服务

Javascript 角度-通用图像服务与特定资源(例如,用户、图像、动物)图像服务,javascript,ruby-on-rails,angularjs,Javascript,Ruby On Rails,Angularjs,我在思考一个问题时有点困难,需要一些帮助 我正在Rails中使用Angular.js为我的客户端MVC框架开发一个应用程序,并创建了一个Angular可以获取图像的服务。这很简单: var ImageServices = angular.module("ImageServices", ["ngResource"]); ImageServices.factory("Image", ["$resource", function ($resource) { return $resourc

我在思考一个问题时有点困难,需要一些帮助

我正在Rails中使用Angular.js为我的客户端MVC框架开发一个应用程序,并创建了一个Angular可以获取图像的服务。这很简单:

var ImageServices = angular.module("ImageServices", ["ngResource"]);

ImageServices.factory("Image", ["$resource",
  function ($resource) {
    return $resource("/images/:id.json", {}, {
      "query"  : { method: "GET", params: {}, isArray: true },
      "update" : { method: "PUT", params: { id: "@id" } },
      "remove" : { method: "DELETE" }
    });
  }
]);
对于我来说,上面的服务可能有点过于通用。我希望该服务提供给我的是与给定用户关联的所有图像。我想我可以通过在用户数据中嵌套所需的图像数据来实现这一点,如下所示:

user = {
  // user attributes
  blah: "blah",
  //image objects
  images: [
    {} 
  ]
}
或者我可以在Rails中编写代码,返回与用户关联的所有图像,因此:

http://localhost:3000/users/1/images.json
或者我可以为我想要返回的每种类型的数据创建一个服务


在架构上,我不确定什么是有意义的。有人能提供一些关于最佳路径的见解吗?如果没有硬性的答案,如果你能推荐一本书,我并不反对读这方面的书。谢谢

$resource服务有点像$http服务的包装器。它有内置的方法

services.factory('Images', ['$resource',
     function($resource) {
     return $resource('/images/:id', {id: '@id'});
    }]);
@id告诉它从对象中选取id字段,并将其用作id参数。 因此,在您的情况下,您可以执行{id:'@user'}

通过上述资源,您可以访问:

Images.get()    //GET Single JSON
Images.save()   //POST Single JSON
Images.query()  //GET JSON Array
Images.remove() //DELETE Single JSON
Images.delete() //DELETE Single JSON

Images.get({id: 15}) //will make return all images for a user through a call to /images/15.