2008-09-27 51 views

回答

11

通常,我的應用程序的API實際上構建在構成HTML界面的相同資源上。對於一些人(不是我),這可能只是使用腳手架生成器發出的代碼 - 但無論我是自定義編寫還是讓生成器處理它,都有很少的情況下我只將資源暴露給編程API而不是最終用戶視圖。

版本控制對於我到目前爲止建立的應用程序來說並不是問題,但我可以想到兩種實現方法。

1)你可以使用前綴「V1」,「V2」等,即設置的參數,然後可以在控制器進入指定要發生的處理添加路由:

在路線

。 RB:

map.resources :posts, :path_prefix => '/:version' 

在posts_controller.rb

class PostsController < ApplicationController 
    def index 
    respond_to do |format| 
     format.xml do 
     if params[:version] == 'v1' 
      # ... 
     else 
      # ... 
     end 
     end 
    end 
    end 
end 

2)你也可以考慮增加一個自定義的響應格式爲每個版本

在初始化

/mime_types.rb

Mime::Type.register_alias "application/xml", :v1 
Mime::Type.register_alias "application/xml", :v2 

在posts_controller.rb

class PostsController < ApplicationController 
    def index 
    respond_to do |format| 
     format.v1 do 
     # ... 
     end 
     format.v2 do 
     # ... 
     end 
    end 
    end 
end 

前者會給你喜歡example.com/v1/posts.xml和example.com/v2/網址posts.xml;後者會爲您提供像example.com/posts.v1和example.com/posts.v2的網址

+0

如果實際業務邏輯不同,另一種版本控制方法是使用名稱空間路由。 – Kris 2009-06-08 13:38:56