Typhoeus では、Ruby コンストラクトを使用して HTTP パラメーターを渡すことができます。投稿の URL に似た URL を生成するには、次のようにします。
my_params = {
api_key: "XXXXXXXXXXXXXXXXXX",
objects: [
{ field1: 'My ObjectA2' },
{ field: 'ObjectB',
color: '1',
note: '98765' }],
ids: "foo, bar"
}
get_response = Typhoeus::Request.get("http://www.example.com/objects/add.php", params: my_params)
get_response.effective_url #> http://www.example.com/objects/add.php?api_key=XXXXXXXXXXXXXXXXXX&ids=foo%2C+bar&objects=%7B%3Afield1%3D%3E%22My+ObjectA2%22%7D&objects=%7B%3Afield%3D%3E%22ObjectB%22%2C+%3Acolor%3D%3E%221%22%2C+%3Anote%3D%3E%2298765%22%7D
ただし、URL の例には JSON オブジェクトが含まれているため、使用している API が POST 要求を探している可能性が高くなります。
post_response = Typhoeus::Request.post("http://www.example.com/objects/add.php", params: my_params)
post_response.effective_url #> http://www.example.com/objects/add.php
post_response.request.params #> {:api_key=>"XXXXXXXXXXXXXXXXXX", :objects=>[{:field1=>"My ObjectA2"}, {:field=>"ObjectB", :color=>"1", :note=>"98765"}], :ids=>"foo, bar"}
編集:
API が GET 要求を予期している場合、現在、GET 要求を介してシリアル化されたデータを渡す最も一般的な方法は、パラメーター名の末尾に角かっこを追加することです。
http://www.example.com/objects/add.php?objects[]=something&objects[]=something%20else
ただし、Typhoeus はデフォルトで括弧を追加しません。この決定の背後にある理由を提供するTyphoeus メーリング リストでいくつかの議論があります。幸いなことに、括弧は自分で簡単に追加できます。
my_params = {
api_key: "XXXXXXXXXXXXXXXXXX",
:"objects[]" => [
{ field1: 'My ObjectA2' },
{ field: 'ObjectB',
color: '1',
note: '98765' }],
ids: "foo, bar"
}
get_response = Typhoeus::Request.get("http://www.example.com/objects/add.php", params: my_params)
get_response.effective_url #> http://www.example.com/objects/add.php?api_key=XXXXXXXXXXXXXXXXXX&ids=foo%2C+bar&objects%5B%5D=%7B%3Afield1%3D%3E%22My+ObjectA2%22%7D&objects%5B%5D=%7B%3Afield%3D%3E%22ObjectB%22%2C+%3Acolor%3D%3E%221%22%2C+%3Anote%3D%3E%2298765%22%7D