Rails 禁用 JSON 解析 POST/PUT/PATCH 正文

Rails disable JSON parsing of POST/PUT/PATCH body

我想接受一个大的 JSON PUT 请求并使用 Sidekiq 在后台完全处理它。因此,我不想自动解析来自请求正文的传入 JSON。

在 controller/action-based 水平上完成此任务的最佳做法是什么?

据我所知,这是通过 Rack 中间件完成的,所以我不认为您可以立即禁用一个 controller/action。你可以修补 ActionDispatch::ParamsParser 类似于这个人所做的:

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

当然,您可以编写自己的中间件来解析参数,或者为 JSON MIME 类型指定自定义解析器。

最后,您可以一起禁用 JSON 解析。在你的 config/application.rb 添加:

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