Basta chiedersi quale sia la convenzione accettata per la progettazione del controller Rails. Attualmente, tutti i controller della mia app che ho scritto sono configurati per inviare una risposta JSON quando necessario. Il fatto è che utilizzo sempre solo risposte HTML nella mia app. Quindi è una buona idea averli definiti?
Ad esempio:
def show
@dog = Dog.find(params[:id])
respond_to do |format|
format.html
format.json { render json: @dog } # needed?
end
end
Rende il codice del controller meno leggibile (perché più LOC) e significa anche che devo riflettere profondamente su quale dovrebbe essere una buona risposta JSON quando si utilizza HTML non in uso, quindi diminuisce la velocità di sviluppo del mio controller. Questo è particolarmente vero quando hai delle risposte condizionali.
Ad esempio:
def create
@dog = Dog.new(params[:dog])
respond_to do |format|
if @dog.save
format.html { redirect_to @dog }
format.json { render json: @dog, status: :created, location: @dog }
else
format.html { render action: "new" }
format.json { render json: @dog.errors, status: :unprocessable_entity }
end
end
end
L'unico aspetto positivo che posso vedere è che è "a prova di futuro" i controllori (ad esempio se ho bisogno di risposte JSON in seguito, sono già stati scritti).
Ma se sto scrivendo risposte JSON solo perché allora con la stessa logica potrei scrivere anche risposte XML (cioè format.xml
) ...