(make-instance 'http-url :host "foo.com" :port "8000" :scheme "HTTP" :path "/bar") => url (parse-urlstring "http://foo.com:8000/") => url (merge-url an-existing-url "/relative?url") => url
url-scheme url-endpoint url-path url-query url-fragment
also url-host url-port ( url-endpoint = url-host ":" url-port )
These also have SETF methods. The behaviour of (setf url-scheme) is undefined, however, and it will probably go away unless somebody suggests a sensible one.
(merge-url url string)will create and return a new URL from STRING according to the rules for creating relative URLs. Note that this is a complex operation which takes a whole RFC to describe, and it's unlikey that we do it correctly in weird cases. Relative URLs with authority components containing non-standard hosts are currently known to be broken.