URI.scheme
スキームを文字列で返す。
URI.host
ホストを文字列で返す。
URI.port
ポート番号を文字列で返す。
URI.query
クエリを文字列で返す。
URI.path
パスを文字列で返す。
URI.request_uri
path + '?' + queryを文字列で返す。 query が nil である場合は、自身の path を返す。
実践
Qiitaでrubyを検索した結果画面のurlをURIオブジェクトにパースしてみましょう。
require 'uri'
uri = URI.parse('https://qiita.com/search?q=ruby')
puts uri.schem
#=> https
puts uri.host
#=> qiita.com
puts uri.port
#=> 443
puts uri.path
#=> /search
puts uri.query
#=> q=ruby
puts uri.request_uri
#=> /search?q=ruby
join
引数に渡した文字列(変数)を連結してURIオブジェクトを生成する。
encode_www_form
引数で渡した値からURL-encoded form dataを生成する。
私値は配列やハッシュも可能。
GETでuriにパラメータを渡す時などに利用。
uri = URI.join('https://qiita.com','/search')
puts uri
# => https://qiita.com/search
params = {
name: 'hogehoge',
email: 'hogehoge@hogehoge.com'
}
uri.query = URI.encode_www_form(params)
puts uri
# => https://qiita.com/search?name=hogehoge&email=hogehoge%40hogehoge.com