我正在发送一个帖子请求,这是有效负载:
data = {updates: [{action: "create", user_id: "2", type: "view"}]}
但是当我发送它时,API 说它期待:
{ action: "create", user_id: "id", type: "type" }
但它得到:
{:action=u003e\"create\", :user_id=u003e2\"2\", :type=u003e\"view\"}
=> 正在转换。我尝试使用to_json
但这对我没有帮助。
如何正确转换?我认为这与嵌套数组/哈希有关,因为所有其他数组/哈希都可以正常工作。
另外,我正在设置我的请求正文并像这样发送:
request.set_form_data(body)
https.request(request)
看起来我需要使用此语法才能传递set_form_data嵌套哈希:
{'a[b]': 'c'}
与{'a' => {'b' => 'c'}}
相同
但是有没有办法包含数组?我需要有:
data = {updates: [{action: "create", user_id: "2", type: "view"}]}
在此表示法中。
正如你提到的,set_form_data
不接受数组。如果您想继续使用Net::HTTP
库,看起来一种解决方法是对数据进行编码并将其传递给request.body
。
request.body = "updates[][action]=create&updates[][type]=view&updates[][user_id]=2"
request.content_type = 'application/x-www-form-urlencoded'
您还可以像这篇文章中那样创建自定义函数:http://cloudlines.tumblr.com/post/653645115/postput-arrays-with-ruby-nethttp-setformdata
看看这篇关于将复杂对象更改为查询字符串的文章:https://coderwall.com/p/uh8kiw/pass-arrays-objects-via-querystring-the-rack-rails-way。
希望对您有所帮助!