すべてのAPIコントローラへのリクエストをJSONパスにリダイレクトするように制限したいと思います。リダイレクトを使用したいのですが、レスポンスに応じてURLを変更する必要があるためです。
1つのオプションは、要求を同じアクションにリダイレクトするが、JSON形式を強制するbefore_filter
を使用することです。この例はまだ動作していません!Rails:JSON形式へのAPIリクエストの制限
# 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
もう1つのオプションは、経路設定の形式を制限することです。
# 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
...
?
+1コメントの先頭です。私の経験ではフォーマットを追加するのは簡単ではありませんが、Railsは実装が簡単です。 APIデザイナーは、さらなるフォーマットをサポートすることが何を意味しているかを、すべての意味を考慮して考えなければなりません。 –