Vorrei limitare le richieste a tutti i controller API di essere reindirizzati al percorso JSON. Vorrei utilizzare un reindirizzamento poiché anche l'URL dovrebbe cambiare in base alla risposta.
Un'opzione consisterebbe nell'utilizzare un before_filter
che reindirizza la richiesta alla stessa azione ma impone il formato JSON. L'esempio non funziona ancora!Rails: Limita le richieste API al formato 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
Un'altra opzione sarebbe quella di limitare il formato nelle impostazioni dei percorsi.
# routes.rb
MyApp::Application.routes.draw do
namespace :api, defaults: { format: 'json' } do
namespace :v1 do
resources :posts
end
end
end
voglio tutte le richieste di finire come una richiesta 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
...
Quale strategia mi consiglia?
+1 per l'inizio del commento. L'aggiunta di un formato non è così facile nella mia esperienza, sebbene Rails lo renda facile da implementare. Il progettista dell'API deve ancora riflettere su cosa significa supportare un formato aggiuntivo, con tutte le implicazioni. –