Resolve a URL reference against a base URL
Synopsis
Declared in header </boost/url/url_base.hpp#L2744[boost/url/url_base.hpp,window=blank_]>
result<void>
resolve(
const url_view_base& base,
const url_view_base& ref,
url_base& dest);
Description
This function attempts to resolve a URL reference ref
against the base URL base
in a manner similar to that of a web browser
resolving an anchor tag.
The base URL must satisfy the
URI
grammar. In other words, it must contain
a scheme.
Relative references are only usable when
in the context of a base absolute URI.
This process of resolving a relative
reference
within the context of
a
base
URI is defined in detail
in rfc3986 (see below).
The resolution process works as if the
relative reference is appended to the base
URI and the result is normalized.
Given the input base URL, this function
resolves the relative reference
as if performing the following steps:
-
Ensure the base URI has at least a scheme
-
Normalizing the reference path
-
Merge base and reference paths
-
Normalize the merged path This function places the result of the resolution into
dest
, which can be any of the url containers that inherit from url_base. If an error occurs, the contents ofdest
is unspecified andec
is set.
Example
url dest;
system::error_code ec;
resolve("/one/two/three", "four", dest, ec);
assert( dest.str() == "/one/two/four" );
resolve("http://example.com/", "/one", dest, ec);
assert( dest.str() == "http://example.com/one" );
resolve("http://example.com/one", "/two", dest, ec);
assert( dest.str() == "http://example.com/two" );
resolve("http://a/b/c/d;p?q", "g#s", dest, ec);
assert( dest.str() == "http://a/b/c/g#s" );
BNF
absolute-URI = scheme ":" hier-part [ "?" query ]
Exception Safety
Basic guarantee. Calls to allocate may throw.
Specification
Return Value
-
result
Parameters
Name | Type |
---|---|
base |
`` |
ref |
`` |
dest |
`` |