Rails中优雅的API版本控制

NSC*_*sts 5 ruby versioning api ruby-on-rails

目前我正在我们的Rails应用程序中实现REST API的版本控制.有没有一种方法可以实现,所以你只在新版本中定义新功能?比如说:

我有一个用户控制器和一个产品控制器.V1和V2之间的产品保持不变,但用户已经改变.如果我们可以设置它,那将是很好的,如果我呼吁产品的V2,我的应用程序知道它不存在,只是使用最新的控制器版本(在这种情况下,V1).这将允许我们不为每个版本创建一整套新的控制器; 我们只为已更改的特定功能创建新的控制器.

下面是我们Routes.rb的一个片段,不可否认,我不知道如何解决这个问题.任何帮助将不胜感激!

namespace :api do
    scope module: :v1, constraints: ApiConstraints.new(version: 1) do
      resources :users
      resources :products
    end
    scope module: :v2, constraints: ApiConstraints.new(version: 2) do
      resources :users
    end 
end
Run Code Online (Sandbox Code Playgroud)

Mau*_*res 1

你已经看过《葡萄》了吗?

我对我构建的 API 所做的事情是,当所有这些 API 发生变化时(例如身份验证),我只是让它们全部从特定版本的 API 控制器继承,就像在其中Api::V1::BaseController放置常见的行为和控件一样。

由于更改 API 通常也意味着更改表示形式,因此使用为您生成表示形式的工具也非常重要,为此有很多宝石,例如: