Я хотел бы ограничить запросы ко всем контроллерам API перенаправлением на путь JSON. Я хотел бы использовать перенаправление, так как URL-адрес должен измениться в соответствии с ответом.
Один из вариантов - использовать 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
...
Какую стратегию вы бы порекомендовали?