2017-04-26 102 views
0

在我的Ruby on Rails應用程序,我有我的API的路線是這樣的:版本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

routes.rb「只是紅寶石」,所以你應該可以做一個簡單的循環來處理兩個版本:

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

這沒有按」 t 重定向(正如你在你的問題中提到的那樣),它只是意味着你的API對兩個URL都返回相同的結果。我認爲這是一個更簡單的解決方案,無論如何,它可以說是反模式,在大多數情況下,重定向API響應。