Build a URL from component parts (protocol, host, path, query, hash)
URL protocol (e.g., https, http)
Hostname (e.g., example.com)
Port number (leave empty for default)
URL path (e.g., /api/v1/users)
Query string without ? (e.g., key=value&foo=bar)
Fragment/hash without # (e.g., section1)