Rails 2是否支持JSON POST请求?

时间:2014-10-06 22:30:34

标签: ruby-on-rails json curl ruby-on-rails-2

当我在POST请求中发送JSON数据时,我的控制器没有看到数据。等效的XML工作正常,Rails 2不支持JSON吗?我需要安装一些其他宝石吗?

我正在使用Rails 2.0.2,并且我为我的模型生成了脚手架。我可以使用生成的代码使用浏览器创建记录,或者我可以通过发送带有curl的XML POST请求来创建记录。

现在我想更改生成的代码以支持JSON而不是XML。我用format.xml替换了format.json次调用,现在GET请求给了我很好的JSON。

但是,当我尝试通过发送JSON POST请求创建记录时,没有任何参数传递给我的控制器。

为了追踪问题,我用以下方法替换了控制器的create()方法:

# POST /some_models
# POST /some_models.json
def create
    render :json => params
end

这只会转储params哈希的内容,以便我可以看到传递了什么。

我使用这个curl语句用XML数据测试它:

curl --request POST --cookie cookies.txt -d "<some_model version='6.6' order_by='606'/>" -H "Content-Type:text/xml" http://localhost:3000/some_models.xml

工作正常,我看到了这个输出:

{"some_model": {"version": "6.6", "order_by": "606"}, "format": "xml", "action": "create", "controller": "some_models"}

现在我尝试使用JSON数据的等价物:

curl --request POST --cookie cookies.txt -d '{ "some_model": {"version": "6.6", "order_by": 606} }' -H "Content-Type:application/json" http://localhost:3000/some_models.json

现在我没有在some_model哈希中获得params密钥:

{"format": "json", "action": "create", "controller": "some_models"}

1 个答案:

答案 0 :(得分:2)

根据article from 25th May 2008

  

幸运的是,事实证明对JSON的完全支持是   在2008年4月加入Rails,使其成为一等公民   以及XML和常规URL编码的表单字段。   此功能将在Rails 2.1中正式发布

文章提到在Rails 2.1之前,使用了这个json_request插件:

https://github.com/assaf/labnotes/tree/master/ruby/rails_plugins/json_request/