====== uritemplate ====== [[RFC>3896]] viz take JSR311 JAX-RS resp. **urldispatch** * [[github>toffaletti/libguri]] * [[sf>uriparser]] <code> URI-Template = *( literals / expression ) literals = %x21 / %x23-24 / %x26 / %x28-3B / %x3D / %x3F-5B / %x5D-5F / %x61-7A / %x7E / ucschar / iprivate / pct-encoded ; any Unicode character except: CTL, SP, ; DQUOTE, "'", "%" (aside from pct-encoded), ; "<", ">", "\", "^", "`", "{", "|", "}" expression = "{" [ operator ] variable-list "}" operator = "+" / "#" / "." / "/" / ";" / "?" / "&" / op-reserve op-reserve = "=" / "," / "!" / "@" / "|" ; reserved for local use: "$" / "(" / ")" + Reserved character strings; # Fragment identifiers prefixed by "#"; . Name labels or extensions prefixed by "."; / Path segments prefixed by "/"; ; Path parameter key or key=value pairs prefixed by ";"; ? Query component beginning with "?" and consisting of key=value pairs separated by "&"; and, & Continuation of query-style &key=value pairs within a literal query component. The operator characters equals ("="), comma (","), exclamation ("!"), at-sign ("@"), and pipe ("|") are reserved for future extensions. The expression syntax specifically excludes use of the dollar ("$") and parentheses ["(" and ")"] characters so that they remain available for local language extensions outside the scope of this specification. variable-list = varspec *( "," varspec ) varspec = varname [ modifier ] varname = varchar *( varchar / "." ) varchar = ALPHA / DIGIT / "_" / pct-encoded modifier = prefix / explode prefix = ":" max-length max-length = %x31-39 *DIGIT ; positive integer explode = "*" </code>