RailsでRESTfulなパブリックAPIを設計するためのベストプラクティスは何ですか?

StackOverflow https://stackoverflow.com/questions/144359

  •  02-07-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

通常、私のアプリケーションのAPIは、実際にはHTMLインターフェースを構成する同じリソース上に構築されます。一部の人(私ではない)にとって、それは単にscaffoldジェネレーターから出てくるコードを使用している可能性がありますが、カスタムで記述するか、ジェネレーターで処理させるかに関わらず、リソースを公開するインスタンスはほとんどありませんエンドユーザービューではなく、プログラム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を提供します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top