A Uniform Resource Identifier (URI) is a string of characters that Identify a resource.
Because a resource can be created dynamically, an URI is also a request.
http://example.com/product/id?sort=asc
http://{host}/product/{id}{?sort}
The ISBN system for uniquely identifying books provides a typical example of the use of URNs. ISBN 0486275574 (urn:isbn:0-486-27557-4) cites, unambiguously, a specific edition of Shakespeare's play Romeo and Juliet.
To get this book, a location is needed: a URL address. A typical URL for this book on a Unix-like operating system would be a file path such as file:///home/username/RomeoAndJuliet.pdf, identifying the electronic book saved in a file on a local hard disk.
To open the email client application and send an email, the mailto scheme
<a href="mailto:[email protected]">link</a>
ftp://ftp.is.co.za/rfc/rfc1808.txt
ldap://[2001:db8::7]/c=GB?objectClass?one
tel:+1-816-555-1212
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
telnet://192.0.2.16:80/
news:comp.infosystems.www.servers.unix
URIs can be of the type:
Type | Description | Goal | Example |
---|---|---|---|
Names | Uniform resource name (URN) | To defines an item's identity | A person's name |
Locators | Uniform resource locator (URL) | To provide a method for finding an item | person's street address |
An opaque URI is an absolute URI whose scheme-specific part does not begin with a slash character ('/').
Opaque URIs are not subject to further parsing. Some examples of opaque URIs are:
A hierarchical URI is subject to further parsing according to the syntax
URI = scheme ":" (/|//) [authority] path [ "?" query ] [ "#" fragment ]
where:
A URI is absolute if, and only if, it has a scheme component.
Absolute URI = URI without fragment identifier
An absolute hierarchical URI reference follows the pattern: ://?#
absolute-URI = scheme ":" hier-part [ "?" query ]
More see Absolute URI
A URI that is not absolute is said to be relative
Relative URI references (which are always hierarchical) follow one of two patterns: ?# or //?#
An opaque URI follows this pattern: :#
Components of a parsed URL, which is the result of processing a URL through the URL parser
See URI - Authority (User /Host / Port )
See URI - Path
A query string is the part of a URI that defines key/value data.
URI - Fragment (Ref, Reference)
Interpretation is independent of access. “http://localhost/” has the same interpretation for every user of that reference, even though the network interface corresponding to “localhost” may be different for each end-user:
However, an action made on the basis of that reference will take place in relation to the end-user's context.
An action intended to refer to a globally unique thing must use a URI that distinguishes that resource from all other things. URIs that identify in relation to the end-user's local context should only be used when the context itself is a defining aspect of the resource, such as when an on-line help manual refers to a file on the end-user's file system (e.g., "file:///etc/hosts").
Because an URL uses characters to delimit its component such as the /, ?, #, if you want to use this character in a URL as value, you need to encode them.
See What is URL encoding ? known also as Percent-encoding
Example: Simple String Comparison
You can create templates of URI and expand them to create URI with variables.
For URI: