9

Rails にはすぐに使用できる RESTful リソースが付属していますが、実際のパブリック API にそれらを使用していますか? もしそうなら、API のバージョン管理をどのように達成しますexample.com/api/v2/foo/barか?

4

1 に答える 1

11

通常、私のアプリケーションの API は、実際には HTML インターフェースを構成するのと同じリソース上に構築されています。一部の人 (私ではない) にとっては、それはスキャフォールド ジェネレーターから出てくるコードを使用するだけかもしれません。 API であり、エンド ユーザー ビューではありません。

これまでに作成したアプリケーションでは、バージョン管理は問題ではありませんでしたが、それを実装するには 2 つの方法が考えられます。

1) 接頭辞「v1」、「v2」などのルートを追加できます。これにより、コントローラーでアクセスして発生する処理を指定できるパラメーターが設定されます。

routes.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) バージョンごとにカスタム応答形式を追加することも検討してください。

initializers/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 のような URL を提供します。後者は、example.com/posts.v1 や example.com/posts.v2 のような URL を提供します。

于 2008-09-28T03:30:45.527 に答える