版本控制API重复

时间:2017-04-26 07:14:12

标签: ruby-on-rails ruby ruby-on-rails-4 routes

在我的Ruby on Rails应用程序中,我的api路由如下:

namespace :api, defaults: { format: :json }  do
  namespace :v1 do
    resources :users
    resources :clients
  end
end

现在我的users资源的响应格式将会改变,所以我想创建新的api版本:v2。我的clients资源不会更改,因此我需要将jbuilder模板和控制器复制到v2 api命名空间。这将是一个重复。有办法避免吗?假设每当有人试图联系api/v2/clients/*时,我会将他重定向到api/v1/clients*

1 个答案:

答案 0 :(得分:1)

routes.rb只是"只是Ruby",所以你应该能够做一个简单的循环来处理这两个版本:

namespace :api, defaults: { format: :json }  do
  [:v1, :v2].each { |version|
    namespace version do
      resources :users
      resources :clients
    end
  }
end

这不会重定向(正如您在问题中提到的那样),它只是意味着您的API会为两个网址返回相同的结果。我认为这是一个更简单的解决方案,在大多数情况下,它可以说是反模式,无论如何都要重定向API响应。