Need help with uri-templates?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

geraintluff
129 Stars 20 Forks 32 Commits 13 Opened issues

Description

JavaScript utility for RFC 6570: URI Templates

Services available

!
?

Need anything else?

Contributors list

No Data

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:

javascript
var uriTemplates = require('uri-templates');
var template1 = uriTemplates("/date/{colour}/{shape}/");

In browser:

javascript
var template2 = new UriTemplate("/prefix/{?params*}");

Substitution using an object

// "/categories/green/round/"
var uri1 = template1.fill({colour: "green", shape: "round"});

// "/prefix/?a=A&b=B&c=C var uri2 = template2.fillFromObject({ params: {a: "A", b: "B", c: "C"} });

Substitution using a callback

// "/categories/example_colour/example_shape/"
var uri1b = template1.fill(function (varName) {
    return "example_" + varName;
});

Guess variables from URI ("de-substitution")

var uri2b = "/prefix/?beep=boop&bleep=bloop";
var params = template2.fromUri(uri2b);
/*
    {
        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 = uriTemplate("{/id*}{?fields,token}");

var values = template.fromUri("/person/albums?fields=id,name,picture&token=12345"); /* { id: ["person", 'albums"], fields: ["id", "name", "picture"], token: "12345" } */

License

This project is released as public-domain. Anybody can modify or re-license it for any purpose, without restriction.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.