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