Ruby: set_form_data深沉巢狀資料損壞問題
阿新 • • 發佈:2019-02-14
用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 }