2015-12-23 8 views
7

Ich möchte eine große JSON PUT Anfrage nehmen und es vollständig im Hintergrund mit Sidekiq verarbeiten. Daher möchte ich den eingehenden JSON nicht automatisch vom Hauptteil der Anfrage analysieren.Rails deaktivieren JSON Parsing von POST/PUT/PATCH Körper

Was ist die beste Vorgehensweise, um dies auf einer Controller/Action-basierten Ebene zu erreichen?

+3

Vielleicht nur einen anderen Inhaltstyp für diese Anfrage verwenden? –

Antwort

8

Soweit ich weiß, ist dies über Rack-Middleware, so dass ich glaube nicht, dass Sie es für einen Controller/Aktion direkt aus der Box deaktivieren können. Sie können ActionDispatch::ParamsParser ähnlich flicken, was dieser Kerl tat

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

Sie, natürlich können Sie Ihre eigene Middleware schreiben, die die Parameter analysiert oder einen benutzerdefinierten Parser für JSON MIME-Typ angeben.

Endlich können Sie die JSON-Analyse alle zusammen deaktivieren. In Ihrer config/application.rb add:

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

Das würde die Änderung auf die gesamte Anwendung anwenden, Sie wahrscheinlich nicht wollen, überprüfen Sie http://icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certains-urls-for-rails- Streaming-Antworten/wie Middleware-Änderungen abhängig von URI angewendet werden – bbozo