我将我的rest-client gem从1.8升级到2.0。
在1.8上,它在get请求中发送一个params数组my-url?ids=1,2,3,4
。
但是在2.0上它使用了my-url?ids=1&ids=2&ids=3
之类的重复键。由于超出此问题上下文的原因,我们的后端不支持新的多键语法(好吧,它支持它,但我们必须制作一个大的重构)。所以我想知道是否有一种方法可以使用2.0客户端版本并继续发送只有一个密钥的get数组请求,并像以前一样用逗号分隔?
答案 0 :(得分:2)
基于rest-client
文档https://github.com/rest-client/rest-client#query-parameters,您似乎唯一的选择是自己序列化参数并将其作为查询字符串添加到URL中。
如果你不喜欢这种行为并希望获得更多控制,只需自己序列化params(例如使用URI.encode_www_form)并将查询字符串直接添加到URL以获取GET参数,或者将有效负载作为字符串传递给POST请求。
如果您提供一些关于如何使用gem的示例代码,我们可以通过示例答案提供更好的帮助。
答案 1 :(得分:0)
好的是Leo Correa是对的,所以我要做的就是替换我的旧代码
params = {
partner_key: @partner,
resources: ["front_end_config", "gui_settings"]
}
@response = JSON.parse( RestClient.get( "#{api_base_uri}/partner_config.json", params: params.merge({multipart:true}) ) )
使用这个新的,自行序列化和编码......
params = {
partner_key: @partner,
resources: '["front_end_config", "gui_settings"]'
}
params = URI.encode_www_form(params.merge({multipart:true}))
@response = JSON.parse( RestClient.get( "#{api_base_uri}/partner_config.json?#{params}" ) )
它很难看,但它对我有用。如果有关于如何让它变得更好的其他想法,我会很感激。