Rails 5でrequest.body.readを複数回呼ぶとnilが返ってくる
バージョン
- Rails: 5.2.4.6
結論
Content-Type が json ( application/json 等) ではない場合にこの現象が発生するようです。
Content-Type が json 以外でどうしても複数回呼びたい場合は request.raw_post を使用するとよさそうです。
次に説明しますが Content-Type が json に該当する場合であれば内部的に request.raw_post が呼ばれ、その中で RAW_POST_DATA という特殊なヘッダーに値が設定されて request.body.read が呼ばれた時もそのヘッダーから値が使用されるため複数回呼び出しても値が返ってくるようになっています。
ソースコード
request.body と request.raw_post
Content-Type が json に該当する場合に raw_post が呼ばれる処理
更新履歴
- 5d67274 2021-12-18T09:57:47+09:00 記事のディレクトリ構造を変更