Addressable::URI でURLを簡単に生成する (Ruby)
API叩くときにquerystring生成するのって面倒ですが(?つけたり&でつなげたり) Addressable::URI を使うと簡単に生成できます。
というのを先ほど知りました。
How to turn a Ruby Hash into HTTP Params - Stack Overflow
例
上記リンクがとても分かりやすいのですが今回使用した例。
require 'addressable/uri' uri = Addressable::URI.parse('https://github.com/trending') uri.query_values = {l: 'objective-c++', since: 'weekly'} p uri.query => "l=objective-c%2B%2B&since=weekly" p uri.to_s => "https://github.com/trending?l=objective-c%2B%2B&since=weekly"
一見よさそうですが
querystringのparameterの一部もしくは全てがnilの場合querystringにパラメータを渡したくないのですが、そこはうまくいきません。
とりあえずこうしました。
if language or since uri.query_values = { l: language, since: since}.delete_if{ |k,v| v.nil? } end
んー、これはいまいちだなぁ。monkey patchingしようかしら。
2014/6/18追記
勝手に標準添付ライブラリかと思っていましたが、rubygemsでした。
sporkmonger/addressable