我正在尝试查询API (lichess API)。而且我无法正确考虑参数,因为URI没有按照数组参数的预期格式格式化URL。
预期的格式是:curl https://explorer.lichess.ovh/lichess?ratings[]=2200&ratings[]=2500。因此,ratings参数是一个值数组,并且url应该使用ratings[]=value。
我现在像这样生成我的URI,as per the doc
base = "https://explorer.lichess.ovh/master"
params = {
ratings: [1600, 1800]
}
uri = URI(base)
uri.query = URI.encode_www_form(params)但这会生成这样的URL:https://explorer.lichess.ovh/master?ratings=1600&ratings=1800...这不是预期的格式,Lichess API无法理解。
Ruby是否提供了任何内置的方法来生成预期格式的参数,或者我是否需要手动构建URL (这感觉就像是在重新发明轮子)?
发布于 2021-02-21 20:56:20
Rails/ActiveSupport有一个to_query方法,它可以做你想做的事情。
2.1.5 :010 > params.to_query
=> "ratings%5B%5D=1600&ratings%5B%5D=1800" 另外,看看this comment,它解释了为什么URI.encode_www_form不返回方括号。
https://stackoverflow.com/questions/66301969
复制相似问题