Rails 默认脚手架包括允许您发布 API 的方法,允许用户通过 HTML 和 JSON 与相同的控制器进行交互。
body
为带有和url
带有的产品模型生成一个新的脚手架rails generate scaffold products body:string url:string
将类似于:
# GET /products
# GET /products.json
def index
@products = Product.all
end
并生成一个 HTML 视图,还index.json.jbuilder
:
json.array!(@products) do |product|
json.extract! product, :body, :url
json.url product_url(product, format: :json)
end
Rails 显然会自动生成所有代码,让我们将这个模型作为 API 公开,并提供我们的标准 HTML 接口。
我的问题是:
- 对这样的版本进行版本化的推荐做法是什么?
- 这种公开 API 的方法真的是预期的做法吗?
- 我发现的所有其他资源都建议使用单独的命名空间控制器来公开 API 操作,那么为什么要在默认设置中公开 JSON 和 HTML?