【问题标题】:Rails restful api with method that returns multiple resources带有返回多个资源的方法的Rails restful api
【发布时间】:2014-09-03 17:59:17
【问题描述】:

我正在用 ruby​​ on rails 做一个 API。我有 2 种返回 json 资源的方法。这两个资源彼此没有任何关系。我想要做的是构建一种方法来在一个请求中返回这两个资源。在不损害宁静原则的情况下,最好的方法是什么?我应该保持这种方式吗?

编辑

我的文件可以更好地解释我自己。

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 中吗?这是更好的方法吗?

【问题讨论】:

    标签: ruby-on-rails rest restful-architecture


    【解决方案1】:

    假设这两个资源应该在同一个请求中呈现是有充分理由的,您可以以这样的格式呈现它们:

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

    【讨论】:

    • 我的理由是因为一个移动APP会使用这个API。它将同时获取此信息。所以,我需要做类似的事情来做一个请求而不是两个。但我的问题不是关于 json 格式,而是设置此路线和方法以不损害宁静模式的最佳方法是什么。我不知道是否有任何rails或restful的约定来做这样的事情。
    • @WilliamWeckl 如果您更具体一点(您在什么时间加载什么数据)会有所帮助,但这听起来有点像您正在将一些数据预加载到应用程序中。在这种情况下,我认为更具体地使用您的 API 操作并摆脱“资源”思维方式是有意义的,因为它不是面向资源的请求。例如,如果您正在为帐户视图预加载帐户详细信息,请致电它类似于“/path/to/api/v1/preload_account”并包含所有必要的数据。
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多