すべての API コントローラーへのリクエストが JSON パスにリダイレクトされるように制限したいと考えています。URLも応答に応じて変更する必要があるため、リダイレクトを使用したいと思います。
1 つのオプションはbefore_filter
、要求を同じアクションにリダイレクトするが、JSON 形式を強制する を使用することです。この例はまだ機能していません。
# base_controller.rb
class Api::V1::BaseController < InheritedResources::Base
before_filter :force_response_format
respond_to :json
def force_response_format
redirect_to, params[:format] = :json
end
end
別のオプションは、ルート設定で形式を制限することです。
# routes.rb
MyApp::Application.routes.draw do
namespace :api, defaults: { format: 'json' } do
namespace :v1 do
resources :posts
end
end
end
すべてのリクエストを JSON リクエストとして終わらせたい:
http://localhost:3000/api/v1/posts
http://localhost:3000/api/v1/posts.html
http://localhost:3000/api/v1/posts.xml
http://localhost:3000/api/v1/posts.json
...
どの戦略をお勧めしますか?