2015-12-23 15 views
7

Tôi muốn có một yêu cầu JSON PUT lớn và xử lý hoàn toàn trong nền với Sidekiq. Vì vậy, tôi không muốn tự động phân tích cú pháp JSON đến từ cơ thể của yêu cầu.Rails vô hiệu hóa phân tích cú pháp JSON của POST/PUT/PATCH body

Làm cách nào để thực hiện điều này tốt nhất trên cấp độ điều khiển/hành động?

+3

Có thể chỉ cần sử dụng loại nội dung khác cho yêu cầu đó? –

Trả lời

8

Theo như tôi biết điều này được thực hiện thông qua Rack middleware, vì vậy tôi không nghĩ rằng bạn chỉ có thể vô hiệu hóa nó cho một bộ điều khiển/hành động ngay ra khỏi hộp. Bạn có thể vá ActionDispatch::ParamsParser tương tự như những gì anh chàng này đã làm:

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

bạn, tất nhiên, có thể viết middleware của riêng bạn mà phân tích các thông số, hoặc chỉ định một phân tích cú pháp tùy chỉnh cho loại JSON MIME.

Cuối cùng, bạn có thể tắt tất cả phân tích cú pháp JSON. Trong config/application.rb của bạn thêm:

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

Điều đó sẽ áp dụng thay đổi cho toàn bộ ứng dụng, có thể bạn không muốn điều đó, hãy xem http://icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails- streaming-response/về cách áp dụng các thay đổi phần mềm trung gian tùy thuộc vào URIhttp: //icelab.com.au/articles/wrapping-rack-middleware-to-exclude-certain-urls-for-rails-streaming-responses/ – bbozo

Các vấn đề liên quan