Skip to main content

62  url standard library

The url module implements RFC 3986 URI/URL parsing, formatting, dot-segment path normalization, relative reference resolution, percent-encoding, and #! compile-time structural query string encoding and decoding (url::encode_query, url::decode_query).

#use url
#use io

#type Filter (q: String, page: Int = 1)

qs = url::encode_query(Filter("edva lang", 2))
io::out $ qs
url::decode_query(Filter, qs) | f => io::out $ f.q

62.1 Types and Function catalog

Symbol / Function Signature Description
url::Url Record (scheme: String, userinfo: String, host: String, port: Int = 0, path: String, query: String, fragment: String) Parsed RFC 3986 URL
url::QueryEntry Record (key: String, val: String) Single query parameter key-value pair
url::QueryParams QueryEntry{} Growable list of query parameters
url::parse(raw) String => < Url | Error > Parses an RFC 3986 URI/URL reference (including IPv6 [::1]:8080 authorities)
url::format(u) Url => String Formats a Url record into its canonical string representation
url::resolve(base, ref_str) Url, String => < Url | Error > Resolves a relative URI reference against base per RFC 3986 Section 5.2
url::normalize_path(path) String => String Resolves . and .. path segments per RFC 3986 Section 5.2.4
url::encode_component(s) String => String Percent-encodes s leaving only RFC 3986 unreserved characters unescaped
url::decode_component(s) String => < String | Error > Decodes %XX percent-escapes
url::encode_form(s) String => String Encodes s for application/x-www-form-urlencoded (spaces become +)
url::decode_form(s) String => < String | Error > Decodes application/x-www-form-urlencoded (+ to space and %XX)
url::encode_path(s) String => String Percent-encodes a URL path while preserving / and path-safe sub-delimiters
url::parse_query(qs) String => < QueryParams | Error > Parses a query string (with or without leading ?) into QueryParams
url::format_query(params) QueryParams => String Formats QueryParams into a k1=v1&k2=v2 query string
url::get_query(params, key) QueryParams, String => < String | > Returns the first value for key in params
url::get_query_all(params, key) QueryParams, String => String{} Returns all values for key in params
url::encode_query(val) #! T: Type, T => String Encodes a record [(..)], map K ^ V, or QueryParams into a query string
url::decode_query(T, qs) #! T: Type, String => < T | Error > Decodes a query string into record T (honoring field defaults, <P|> options, and E{} repeated keys), map K ^ V, or QueryParams
url::encode(val) #! T: Type, T => String Canonical encoder: formats Url or encodes a query record/map
url::decode(T, s) #! T: Type, String => < T | Error > Canonical decoder: parses Url when T is Url, or decodes query string into T