1. 程式人生 > >Ruby: set_form_data深沉巢狀資料損壞問題

Ruby: set_form_data深沉巢狀資料損壞問題

用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 }