Chciałbym ograniczyć żądania do wszystkich kontrolerów API, aby były przekierowywane do ścieżki JSON. Chciałbym użyć przekierowania, ponieważ adres URL powinien się zmienić zgodnie z odpowiedzią.
Jedną opcją byłoby użycie before_filter
, która przekierowuje żądanie do tej samej akcji, ale wymusza format JSON. Przykład nie działa jeszcze!Szyny: Ogranicz żądania API do formatu 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
Inną opcją byłoby ograniczenie formatu w ustawieniach tras.
# routes.rb
MyApp::Application.routes.draw do
namespace :api, defaults: { format: 'json' } do
namespace :v1 do
resources :posts
end
end
end
Chcę wszystkim prośba skończyć jako żądanie 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
...
Która strategia polecacie?
+1 za początek komentarza. Dodanie formatu nie jest łatwe z mojego doświadczenia, chociaż Railsy ułatwiają implementację. Projektant API wciąż musi przemyśleć, co to znaczy wspierać dodatkowy format, z wszystkimi implikacjami. –