在我的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*
答案 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响应。