Typhoeus позволяет передавать параметры HTTP с использованием конструкций Ruby.Чтобы создать 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