...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Resolve a URL reference against a base URL.
Defined in header <boost/url/url_base.hpp>
result< void > resolve( url_view_base const& base, url_view_base const& ref, url_base& dest);
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:
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 of dest
is unspecified
and ec
is set.
url dest; 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" );
absolute-URI = scheme ":" hier-part [ "?" query ]
Basic guarantee. Calls to allocate may throw.
An empty result
upon success, otherwise an error code if !base.has_scheme()
.
Name |
Description |
---|---|
|
The base URL to resolve against. |
|
The URL reference to resolve. |
|
The container where the result is written, upon success. |
5. Reference Resolution (rfc3986)
Convenience header <boost/url.hpp>