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 be NULL.
  • u_scheme: The URL scheme, such as “http” or “inproc”. Always lower case. This will never be NULL.
  • u_userinfo: This username and password if supplied in the URL string. Will be NULL when 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 be NULL if not present.
  • u_fragment: This is used for specifying an anchor, the part after # in a URL. Will be NULL if 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.