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 記事のディレクトリ構造を変更