Networking Basics
URI Parts
The URI library splits a web address into scheme, host, path, and query parts.
uri parse
`URI.parse` turns an address string into a structured object without opening a network connection.
URI Parts
uri_parts.rb
Replay: real traced execution (multi-file project)
require "uri"
raw_url = "https://example.com/books/42?format=json"
uri = URI.parse(raw_url)
scheme = uri.scheme
host = uri.host
path = uri.path
query = uri.query || "none"
puts "scheme=#{scheme}"
puts "host=#{host}"
puts "path=#{path}"
puts "query=#{query}"
require "uri"
raw_url = "http://localhost:8080/status?debug=true"
uri = URI.parse(raw_url)
scheme = uri.scheme
host = uri.host
path = uri.path
query = uri.query || "none"
puts "scheme=#{scheme}"
puts "host=#{host}"
puts "path=#{path}"
puts "query=#{query}"
require "uri"
raw_url = "https://docs.ruby-lang.org/en/master/"
uri = URI.parse(raw_url)
scheme = uri.scheme
host = uri.host
path = uri.path
query = uri.query || "none"
puts "scheme=#{scheme}"
puts "host=#{host}"
puts "path=#{path}"
puts "query=#{query}"
raw_url ← https://example.com/books/42?format=json, uri ← https://example.com/books/42?format=json
1require "uri"23raw_url→ https://example.com/books/42?format=json = "https://example.com/books/42?format=json" #@raw_url="http://localhost:8080/status?debug=true", "https://docs.ruby-lang.org/en/master/"4uri→ https://example.com/books/42?format=json = URI.parse(raw_url)https://example.com/books/42?format=json56scheme→ https = uri.schemehttps7host→ example.com = uri.hostexample.com8path→ /books/42 = uri.path/books/429query→ format=json = uri.queryformat=json || "none"1011puts "scheme=#{schemehttps}"12puts "host=#{hostexample.com}"13puts "path=#{path/books/42}"14puts "query=#{queryformat=json}"outputscheme=https host=example.com path=/books/42 query=format=json
raw_url ← http://localhost:8080/status?debug=true, uri ← http://localhost:8080/status?debug=true
1require "uri"23raw_url→ http://localhost:8080/status?debug=true = "http://localhost:8080/status?debug=true"4uri→ http://localhost:8080/status?debug=true = URI.parse(raw_url)http://localhost:8080/status?debug=true56scheme→ http = uri.schemehttp7host→ localhost = uri.hostlocalhost8path→ /status = uri.path/status9query→ debug=true = uri.querydebug=true || "none"1011puts "scheme=#{schemehttp}"12puts "host=#{hostlocalhost}"13puts "path=#{path/status}"14puts "query=#{querydebug=true}"outputscheme=http host=localhost path=/status query=debug=true
raw_url ← https://docs.ruby-lang.org/en/master/, uri ← https://docs.ruby-lang.org/en/master/
1require "uri"23raw_url→ https://docs.ruby-lang.org/en/master/ = "https://docs.ruby-lang.org/en/master/"4uri→ https://docs.ruby-lang.org/en/master/ = URI.parse(raw_url)https://docs.ruby-lang.org/en/master/56scheme→ https = uri.schemehttps7host→ docs.ruby-lang.org = uri.hostdocs.ruby-lang.org8path→ /en/master/ = uri.path/en/master/9query→ none = uri.query(empty) || "none"1011puts "scheme=#{schemehttps}"12puts "host=#{hostdocs.ruby-lang.org}"13puts "path=#{path/en/master/}"14puts "query=#{querynone}"outputscheme=https host=docs.ruby-lang.org path=/en/master/ query=none