在使用Rails 4和content-type application / json读取之前,request.body是否需要倒带?还是有新的方法?

时间:2013-05-17 01:28:55

标签: json rack ruby-on-rails-4

当我使用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不需要先倒回。

3 个答案:

答案 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