2014-09-03 95 views
0

我在轨道上做了红宝石的API。我有2个方法返回json中的资源。这两个资源之间没有任何关系。我想要做的是构建一个方法来在一个请求中返回这2个资源。在不损害宁静原则的情况下,做到这一点的最佳方式是什么?我应该保持这种方式吗?Rails restful api与返回多个资源的方法

编辑

我的文件来解释自己更好。

的routes.rb

resources :cities, only: [:index] 
resources :products, only: [:index] 

cities_controller.rb

class CitiesController < ApplicationController 

    respond_to :json 

    def index 
    @cities = City.all 
    render :json => @cities 
    end 

end 

products_controller.rb

class ProductsController < ApplicationController 

    respond_to :json 

    def index 
    @products = Product.all 
    render :json => @products 
    end 

end 

我应该创建第三个控制器和路由在一个获得此两种资源一起JSON?这是更好的方法吗?

回答

0

假设有一个很好的理由,这些2个资源应在相同的请求提交,你可以使它们在这样的格式:

{ 
    "rabbit" => { ... }, 
    "mouse" => { ... } 
} 
+0

我的理由是,因为移动应用将会使用这个API。它将同时获得这些信息。所以,我需要做这样的事情来做一个请求,而不是两个。但我的问题不是关于json格式,而是设置这条路线和方法而不损害宁静模式的最佳方式。我不知道是否有任何轨道或​​宁静的惯例做这样的事情。 – 2014-09-03 19:08:57

+0

@WilliamWeckl如果你更具体一些(你在什么时间加载了哪些数据),它会有所帮助,但这听起来有点像你正在将一些数据预加载到应用程序中。在这种情况下,我相信通过API操作获得更具体的内容是有意义的,并且远离“资源”思维模式,因为它不是面向资源的请求。例如,如果您正在预加载帐户视图的帐户详细信息,请致电它类似于“/ path/to/api/v1/preload_account”并包含所有必要的数据。 – animatedgif 2014-09-03 19:13:46

+0

我现在正在编辑我的问题,以便更清楚。 – 2014-09-03 19:18:15