当我使用Content-Type将数据发布到Rails 4应用程序时:" application / x-www-form-urlencoded"我可以通过request.body.read
获取请求的正文但是,当我使用Content-Type" application / json"发布数据时,request.body.read为空,除非我先调用request.body.rewind。
两个问题:
1。)如何在不首先在流上调用倒带的情况下获取原始请求主体?
2。)当客户端发送内容类型application / json时,是否可以停止Rails(或Rack)解析请求体中的JSON
请注意,在Rails 3中,与Rails 4一样,解析的JSON在params中可用,但是request.body.read不需要先倒回。
答案 0 :(得分:5)
这is indeed a bug。修复程序已集成到master中,可能应该在4.0.1中弹出。
答案 1 :(得分:2)
使用request.env而不是request.body.read。
答案 2 :(得分:0)
看起来它可能是ActionDispatch :: ParamsParser中的一个错误。 将以下内容放在config / application.rb中似乎可以解决它
config.middleware.delete ActionDispatch::ParamsParser