uri-template is an implementation of the URI Template proposed standard draft version 01 as a reader macro, used for both creating and parsing URIs.

Although uri-template does not implement the operators introduced in the 02 and later drafts of the URI Template standard, it does allow arbitrary Lisp expressions in template placeholders, which gives simpler and more powerful templates.

Examples use:

Template interpolation:

(let ((foo 1)) https://www.example.com/widget/{foo}/parts)

=> "https://www.example.com/widget/1/parts"

Template destructuring:

(uri-template-bind (#Uhttps://www.example.com/{part}/{number}) "https://www.example.com/widget/1" (list part (parse-integer number) %uri-host))

=> ("widget" 1 "www.example.com")

License: LGPL-3.0-or-later

Homepage: https://common-lisp.net/project/uri-template/

Source repository: https://gitlab.common-lisp.net/uri-template/uri-template.git

Mailing list: uri-template-devel@common-lisp.net

Author: Vladimir Sedach

Related projects: puri (URI parsing and representation) cl-uri-templates (fork of uri-template supporting operators)