URI Template
Appearance
A URL Template is a way to specify a URL that includes parameters that must be substituted before the URL is resolved. The syntax is usually to enclose the parameter in Braces ({example}). The convention is for a parameter to not be Percent encoded unless it follows a Question Mark (?).
Examples
- http://example.com/people/{firstName}-{lastName}/SSN
- http://example.com/query?firstName={firstName}&lastName={lastName}
If we were building these urls for Björk with firstName=Björk and lastName=Guðmundsdóttir they would be:
- http://example.com/people/Björk-Guðmundsdóttir/SSN
- http://example.com/query?firstName=Bj%c3%b6rk&lastName=Gu%c3%b0mundsd%c3%b3ttir
Code
In Python 2.x, if you have the variable name
that you want to put into the string url
, you can simply do this:
import urllib2
while "{name}" in url:
if "?" in url and url.find("?") < url.find("{name}"):
url = url.replace("{name}", urllib2.quote(name), 1)
else:
url = url.replace("{name}", name, 1)
Note: this will go into an infinite loop if name == "{name}"
or other such corner cases.
See also
- European Legislation Identifier (URL template is used by ELI)
External links
- URI templates project
- RFC6570 at the IETF