URLs
Universal Resource Locators, or URLs for short, are a standardized way of representing a network resource, defined in RFC 1738, and RFC 3968.
In Scalability Protocols, this concept is extended, although it includes schemes that are not part of the IETF standards.
URL Structure
typedef struct nng_url {
char *u_rawurl;
char *u_scheme;
char *u_userinfo;
char *u_host;
char *u_hostname;
char *u_port;
char *u_path;
char *u_query;
char *u_fragment;
char *u_requri;
} nng_url;
URL Fields
Applications may access individual fields, but must not free or alter them, as the underlying memory is managed by the library.
The fields of an nng_url object are as follows:
u_rawurl: The unparsed URL string. This will never beNULL.u_scheme: The URL scheme, such as “http” or “inproc”. Always lower case. This will never beNULL.u_userinfo: This username and password if supplied in the URL string. Will beNULLwhen not present.u_host: The full host part of the URL, including the port if present (separated by a colon.)u_hostname: The name of the host, and may be the empty string in some cases.u_port: The port. May be empty if irrelevant or not specified.u_path: The path, typically used with HTTP or WebSockets. Will be empty string if not specified.u_query: The query info (typically following?in the URL.) Will beNULLif not present.u_fragment: This is used for specifying an anchor, the part after#in a URL. Will beNULLif not present.u_requri: The full Request-URI. Will be the empty string if not specified.
note
Other fields may also be present, but only those documented here are safe for application use.
Parse a URL
int nng_url_parse(nng_url **urlp, const char *str);
The nng_url_parse function parses a URL string (in str),
and creates a dynamically allocated nng_url, returning it in urlp.
important
Only nng_url_free should be used to deallocate nng_url objects.
Clone a URL
int nng_url_clone(nng_url **dup, nng_url *url);
The nng_url_clone function creates a copy of url, and returns it in dup.
Destroy a URL
void nng_url_free(nng_url *url);
The nng_url_free function destroy an nng_url object created with
either nng_url_parse or nng_url_free.
This is the only correct way to destroy an nng_url object.
See Also
More information about Universal Resource Locators can be found in RFC 3986.