uri-templates
URI Templates (RFC6570) in JavaScript, including de-substitution.
It is tested against the official test suite, including the extended tests.
The "de-substitution" extracts parameter values from URIs. It is also tested against the official test suite (including extended tests).
Creation
In Node:
var uriTemplates = ;var template1 = ;
In browser:
var template2 = "/prefix/{?params*}";
Substitution using an object
// "/categories/green/round/"var uri1 = template1; // "/prefix/?a=A&b=B&c=Cvar uri2 = template2;
Substitution using a callback
// "/categories/example_colour/example_shape/"var uri1b = template1;
Guess variables from URI ("de-substitution")
var uri2b = "/prefix/?beep=boop&bleep=bloop";var params = template2;/* { params: { beep: "boop", bleep: "bloop" } }*/
While templates can be ambiguous (e.g. "{var1}{var2}"
), it will still produce something that reconstructs into the original URI.
It can handle all the cases in the official test suite, including the extended tests:
var template = ; var values = template;/*{ id: ["person", 'albums"], fields: ["id", "name", "picture"], token: "12345"}*/
strict
option
Sometimes, you might want a more exact match, instead of a best guess. For example, this could be useful when using URI Templates for routing.
The strict
option performs more checks, to see whether the URI being matched is plausible:
var template = ; // Matches, even though "foo/bar" contains a "/" which is not allowedvar looseMatch = template;// Does not matchvar strictMatch = template;
Test URI
var uri2b = "/prefix/?beep=boop&bleep=bloop";var isMatch = template2; // === true
This returns a boolean, and takes the same options as .fromUri()
.
License
This project is released as public-domain. Anybody can modify or re-license it for any purpose, without restriction.