在我的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*
routes.rb
是" Just Ruby",因此您应该能够制作一个简单的循环来处理这两个版本:
namespace :api, defaults: { format: :json } do
[:v1, :v2].each { |version|
namespace version do
resources :users
resources :clients
end
}
end
这不是 redirect (如您在问题中提到的(,这仅表示您的API返回两个URL的结果。我认为这是一个更简单的解决方案,在大多数情况下,可以说是对API响应的反应。