2015-12-23 8 views
7

Voglio prendere una grande richiesta JSON PUT ed elaborarla interamente in background con Sidekiq. Pertanto, non voglio analizzare automaticamente il JSON in arrivo dal corpo della richiesta.Rails disabilita l'analisi JSON del corpo POST/PUT/PATCH

Qual è la procedura migliore per eseguire ciò su un controller/livello basato su azioni?

+3

Forse solo utilizzare un altro tipo di contenuto per quella richiesta? –

risposta

8

Per quanto ne so, questo viene fatto tramite il middleware Rack, quindi non penso che sia possibile disabilitarlo per un controller/azione appena estratto dalla scatola. È possibile patchare ActionDispatch::ParamsParser simile a quello che ha fatto questo ragazzo:

http://www.jkfill.com/2015/02/21/skip-automatic-params-parsing/

È, naturalmente, può scrivere il proprio middleware che analizza i parametri, o specificare un parser personalizzato per il tipo MIME JSON.

Finalmente, è possibile disabilitare l'analisi JSON tutti insieme. Nel vostro config/application.rb aggiungere:

config.middleware.swap ActionDispatch::ParamsParser, ActionDispatch::ParamsParser, Mime::JSON => nil 
+0

Questo applicherebbe la modifica all'intera applicazione, probabilmente non lo vorrai, dai un'occhiata a http://icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails- streaming-risposte/su come applicare modifiche al middleware a seconda di URIhttp: //icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails-streaming-responses/ – bbozo