Rails APIのURLにバージョンを含める

RailsでAPIを作ったときに、URLにバージョンを含める方法です。

次のような感じでv1などを含めます。

  • 変更前://api.example.com/hello
  • 変更後://api.example.com/v1/hello

ルーティングの登録

/v1/helloへのパスをルーティングファイルに追加します。

ポイントはバージョンを表現するのにnamespaceを使う点です。

@routes.rb

Rails.application.routes.draw do
 namespace :v1 do
  get 'hello', to: 'hello#index'
 end
end

コントローラの作成

app/controllersv1フォルダを作成し、hello_controller.rbを作成します。

ポイントはV1::HelloControllerとする点です。namespace名が頭に付きます。

@app/controllers/v1/hello_controller.rb

class V1::HelloController < ApplicationController
 def index
  render text: 'hello API V1.'
 end
end

これで、//api.example.com/v1/helloへアクセスできるようになりました。バージョンが上がったときは同じようにnamespaceを追加していきます。

(補足)バージョンごとのルート

//api.example.com/v1/のようなバージョンごとのルートへのルーティングは次のように記述します。

namespaceの中でrootを使うだけです。

@routes.rb

Rails.application.routes.draw do
 namespace :v1 do
  root to: 'application#index'
 end
end