您的位置:首页 > 编程语言 > Ruby

Ruby: set_form_data深沉嵌套数据损坏问题

2017-12-02 11:10 423 查看
用ruby原生的
Net::HTTP
会比
restclient
等来的更轻量化一些。

关于
set_form_data
用法

http.form_data = {"q" => "ruby", "lang" => "en"}
http.form_data = {"q" => ["ruby", "perl"], "lang" => "en"}
http.set_form_data({"q" => "ruby", "lang" => "en"}, ';')


用的时候应该注意

http.set_form_data({:a => {:b => :c}})
http.set_form_data({:a => ["ruby", "perl"]})


上面这种嵌套结构,会受到损坏。

例如

http.set_form_data({:a => ["ruby", "perl"]})


这种方式发送请求那么收到结构将会是:

{:a => "ruby"}


避免这个问题可以使用比较hack的方式:

http.form_data = {'a[]' => ["ruby", "perl"]}


以及

http.form_data = { 'table[field]' => value, 'table[f2]' => v2 }


参考https://apidock.com/ruby/Net/HTTPHeader/set_form_data
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ruby
相关文章推荐