2015-12-23 30 views
7

Chcę wziąć dużą prośbę JSON PUT i przetworzyć ją całkowicie w tle z Sidekiq. Jako takie, nie chcę automatycznie analizować przychodzące JSON z ciała żądania.Railsy wyłączają parsowanie JSON POST/PUT/PATCH body

Co jest najlepszą praktyką do osiągnięcia tego na poziomie kontrolera/działania?

+3

Może wystarczy użyć innego typu zawartości dla tego żądania? –

Odpowiedz

8

O ile mi wiadomo, odbywa się to za pomocą oprogramowania pośredniczącego Rack, więc nie sądzę, że można go wyłączyć dla jednego kontrolera/akcji zaraz po wyjęciu z pudełka. Można załatać ActionDispatch::ParamsParser podobny do tego, co ten facet zrobił:

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

Ty, oczywiście, można napisać własny middleware, który analizuje parametry lub określić niestandardowy parsera JSON do typu MIME.

Na koniec można wyłączyć analizę składni JSON. W pliku config/application.rb dodaj:

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

To zastosuje zmianę do całej aplikacji, prawdopodobnie tego nie chcesz, sprawdź http://icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails- odpowiedzi strumieniowe/na temat zastosowania zmian oprogramowania pośredniego w zależności od URI http: //icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails-streaming-responses/ – bbozo