Don’t you mean URL? Nope. URL is just a URI that points to a resource over a network. Uniform Resource Identifiers are more useful.
The first superpower of URIs is their secret identity. The most common usage is website URLs starting with
https, but URIs are everywhere.
All URIs start with a scheme followed by a
: colon. This allows consumers of the URI to quickly know if they support the scheme or not.
Looking at all the different examples of URIs, one might assume anything goes after the scheme, but that is not true. URIs have structure.
The next superpower of URIs is the ability to shape-shift into all sorts of different use-cases. Using the most common scheme,
https, here is a URI with all the various parts labelled.
Uniform Resource Identifier. (2021, November 12). On Wikipedia. https://en.wikipedia.org/wiki/Uniform_Resource_Identifier
More formally, the URI syntax is
URI = scheme ":" ["//" authority] path ["?" query] ["#" fragment]
The parts between [square brackets] are optional. Note how each optional part has a prefix? This allows URIs to be parsed with ease.
path is separated with /forward/slashes/ and also shape-shifts. The path represents a tree structure. On web servers, this might be literally the file system tree with corresponding folders and files.
query represent a key-value map, but depending on the format, it could represent a full JSON document using the extended query string library qs.
The URI fragment (also called #hash) has some additional superpowers. It is used to refer to something within the resource the URI resolves to.
In HTML, the fragment is used to scroll
id matching the fragment. In addition, since browsers know the fragment only has meaning for the client, fragments are not sent to the server when requesting the HTML document. This is why in OAuth 2.0, the access token is found in the fragment! Secrets in the fragment are not leaked CDN servers, they stay within the browser. Suddenly, seemingly esoteric method names such as parseHash actually make sense.
In JSON Pointer the fragment is used to refer to a JSON value, which could be in the current document. This allows circular JSON documents to be described.
The third superpower of URIs is the ability to shrink using URI references. These are strings that can be resolved to full URIs given some additional context.
In HTML, let’s say we are on
https://example.com/some/path, here are some examples of URI references and what they resolve to.
//example.com/some-path resolves to
Omitting the scheme means continuing to use the current scheme. This was useful back in the day during the
https transition to avoid mixed content.
. resolves to
./other resolves to
A single dot means the current path.
.. resolves to
../other resolves to
Two dots mean parent path.
/ resolves to
/other resolves to
Leading forward slash means absolute path.
#frag resolves to
other#frag resolves to
In JSON Reference, URI references are used to resolve to other JSON documents.
URIs are incredibly powerful and I’m sure I’ve missed some of its superpowers. Define your own URIs with a custom scheme when you want to identify a resource. battlefy://global/people/jobs