RubyでURIを分解してみた!
URI (Uniform Resource Identifier) を分解して、個々の要素を取り出してみます。
3つのURIで試してみました。
実験に使用したRubyソースです。
#! ruby -Ku
require 'uri'
print "Ruby #{RUBY_VERSION} using.\n\n"
uri = "https://user01:pass01@www.example.com:8080/aaa/index.html?var1=val
ue1;var2=value2#fff"
for i in (0..parts.length-1)
case i
when 0 ; print "scheme : "
when 1 ; print "userinfo : "
when 2 ; print "host : "
when 3 ; print "port : "
when 4 ; print "registry : "
when 5 ; print "path : "
when 6 ; print "opaque : "
when 7 ; print "query : "
when 8 ; print "fragment : "
end
p parts[i]
end
print "\n\n"
uri = "file:///usr/bin/perl"
print "URI = ", uri, "\n"
for i in (0..parts.length-1)
case i
when 0 ; print "scheme : "
when 1 ; print "userinfo : "
when 2 ; print "host : "
when 3 ; print "port : "
when 4 ; print "registry : "
when 5 ; print "path : "
when 6 ; print "opaque : "
when 7 ; print "query : "
when 8 ; print "fragment : "
end
p parts[i]
end
print "\n\n"
uri = "http:aabbccddeeff"
print "URI = ", uri, "\n"
for i in (0..parts.length-1)
case i
when 0 ; print "scheme : "
when 1 ; print "userinfo : "
when 2 ; print "host : "
when 3 ; print "port : "
when 4 ; print "registry : "
when 5 ; print "path : "
when 6 ; print "opaque : "
when 7 ; print "query : "
when 8 ; print "fragment : "
end
p parts[i]
end
下記が実行結果です。registoryだけは、nil になってしまい、値を入れる事ができませんでした。
どういうURIを書けば、URI.registory に値が入るの!?
Ruby 2.6.0 using.
URI = https://user01:pass01@www.example.com:8080/aaa/index.html?var1=val
ue1;var2=value2#fff
scheme : "https"
userinfo : "user01:pass01"
host : "www.example.com"
port : "8080"
registry : nil
path : "/aaa/index.html"
opaque : nil
query : "var1=value1;var2=value2"
fragment : "fff"
URI = file:///usr/bin/perl
scheme : "file"
userinfo : nil
host : nil
port : nil
registry : nil
path : "/usr/bin/perl"
opaque : nil
query : nil
fragment : nil
URI = http:aabbccddeeff
scheme : "http"
userinfo : nil
host : nil
port : nil
registry : nil
path : nil
opaque : "aabbccddeeff"
query : nil
fragment : nil