通过Post在Rails中发送JSON对象

时间:2011-07-11 11:06:00

标签: ruby-on-rails ruby json rest post

这是一个非常直截了当的问题,我正试图弥合我的知识差距。

很简单,应用程序的工作方式如下: 1:i:Web应用程序创建值的哈希值 1:ii:将此哈希转换为JSON 1:iii:通过POST将JSON发送到另一个应用程序 这是主要问题

2:i:其他网络应用收到JSON,反序列化并转回对象。

@hostURL = 'http://127.0.0.1:20000/sendJson'

1我已经完成了i和ii。不太难。

@myHash = HASH.new
    @myHash =
    {
      "myString" => 'testestestes'
      "myInteger" => 20
    }

    @myJsonHash = @myHas.to_json

在我的应用程序中发送帖子请求如下所示:

  res = Net::HTTP.post_form(URI.parse(@hostURL),
    {'myString'=>'testestestest, 'myInteger' => 20})

但是我不知道如何通过post发送JSON哈希。

至于2:

  @request = UserRequest.new({:myString => params[:myString], :myInteger => params[:myInteger] })
           if @request.save
    #ok
      puts "OBJECT CREATED AND SAVED"
    else
    #error
      puts "SOMETHING WENT WRONG WITH OBJECT CREATION"

这就足够了,因为我听到Rails在收到请求时会自动反序列化。


旁注:答案应该是什么?

这是2个网络应用程序通信,所以返回一些HTML会很糟糕。可能是一个数字响应? 200? 404?

在回复数据而不是回应浏览器时是否有任何行业标准

1 个答案:

答案 0 :(得分:2)

您希望使用与from_json相反的to_json。这将使用JSON发送对象并将其转换为ruby,因此您的模型或者保存它将会理解。

@post = Post.new
@post.name = "Hello"

#this converts the object to JSON
@post.to_json 

@post = You want to use `from_json` which does the opposite of `to_json`. This will take the object being sent in JSON and convert it into ruby so your model or however you save it will understand.


@post = Post.new
@post.name = "Hello"

#this converts the object to JSON
@post.to_json 

@post = {
     "name" => 'Hello'
   }   

#this puts it back into JSON
@post.from_json

@post.name = "Hello"
@post.to_json

将JSON(服务器端)发送到通常通过JavaScript或AS3完成的控制器。

您应该解释您的发布方式。从表单,链接。这很重要;但是,最简单的方法是使用jQuery。

$.ajax({
    type: 'POST',
    url: url,
    data: data,
    success: success,
    dataType: json
});

在这里,您希望url成为发布网址,例如app.com/posts(您的域名,然后是控制器),然后数据应采用JSON格式,例如:

data = {
         "name" => 'Hello'
       }