我正在创建一个gem来实现Calendly API,我需要发出像
这样的请求curl --header "X-TOKEN: <your_token>"
--data "url=https://blah.foo/bar&events[]=invitee.created"
https://calendly.com/api/v1/hooks
创建一个webhook。
正如您所看到的,events
作为字符串数组传递,这由[]
表示。
我正在尝试使用RestClient::Request#execute
发送此请求,但在这种情况下我不知道如何传递此字符串数组。
我试过
RestClient::Request.execute(method: :post,
url: @uri,
params: { url: url,
events: "invitee.#{type}"
},
headers: { "X-TOKEN": "#{@api_key}" })
但是我没有像API期望的那样发送数组。
我也试过
RestClient::Request.execute(method: :post,
url: @uri,
params: { url: url,
'events[]': "invitee.#{type}" },
headers: { "X-TOKEN": "#{@api_key}" })
但它也没有用。我得到了一个错误的请求错误,没有别的。
在这种情况下我应该如何构建我的请求?
答案 0 :(得分:2)
发布了可见性(之前已在评论中回答)
RestClient
将适当地序列化原生红宝石Array
,意味着
events: ["invitee.#{type}"]
将序列化为events[]=invitee.created
type == 'created'
。这适用于具有多个值的Array
。
events: ["more","than","one"]
将转换为events[]=more&events[]=than&events[]=one
。
最后,它还处理Array
内的其他数据类型,例如另一个Hash
events: [{first_name: 'Zaphod', last_name: 'Beeblebrox'}]
将成为events[][first_name]=Zaphod&events[][last_name]=Beeblebrox