## org.springframework.web.util
Class UriTemplate

    java.lang.Object
      org.springframework.web.util.UriTemplate

All Implemented Interfaces:
  Serializable

    public class UriTemplate

extends Object
implements Serializable

Represents a URI template. A URI template is a URI-like String that contains variables enclosed by braces (`{`, `}`), which can be expanded to produce an actual URI.

See `expand(Map)`, `expand(Object[])`, and `match(String)` for example usages.

Since:
  3.0
Author:
  Arjen Poutsma, Juergen Hoeller
See Also:
  URI Templates, Serialized Form

Constructor Summary
`UriTemplate(String uriTemplate)` Construct a new `UriTemplate` with the given URI String.

Method Summary
`protected URI` `encodeUri(String uri)` Encodes the given String as URL.
`URI` `expand(Map<String,?> uriVariables)` Given the Map of variables, expands this template into a URI.
`URI` `expand(Object... uriVariableValues)` Given an array of variables, expand this template into a full URI.
`List<String>` `getVariableNames()` Return the names of the variables in the template, in order.
`Map<String,String>` `match(String uri)` Match the given URI to a map of variable values.
`boolean` `matches(String uri)` Indicate whether the given URI matches this template.
`String` `toString()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### UriTemplate

    public UriTemplate(String uriTemplate)

  Construct a new `UriTemplate` with the given URI String.

  Parameters:
    `uriTemplate` - the URI template string

Method Detail

### getVariableNames

    public List<String> getVariableNames()

  Return the names of the variables in the template, in order.

  Returns:
    the template variable names

### expand

    public URI expand(Map<String,?> uriVariables)

  Given the Map of variables, expands this template into a URI. The Map keys represent variable names, the Map values variable values. The order of variables is not significant.

  Example:

       UriTemplate template = new UriTemplate("http://example.com/hotels/{hotel}/bookings/{booking}");
       Map<String, String> uriVariables = new HashMap<String, String>();
       uriVariables.put("booking", "42");
       uriVariables.put("hotel", "1");
       System.out.println(template.expand(uriVariables));

  will print:

  > `http://example.com/hotels/1/bookings/42`

  Parameters:
    `uriVariables` - the map of URI variables
  Returns:
    the expanded URI
  Throws:
    `IllegalArgumentException` - if `uriVariables` is `null`; or if it does not contain values for all the variable names

### expand

    public URI expand(Object... uriVariableValues)

  Given an array of variables, expand this template into a full URI. The array represent variable values. The order of variables is significant.

  Example:

       UriTemplate template = new UriTemplate("http://example.com/hotels/{hotel}/bookings/{booking}");
       System.out.println(template.expand("1", "42));

  will print:

  > `http://example.com/hotels/1/bookings/42`

  Parameters:
    `uriVariableValues` - the array of URI variables
  Returns:
    the expanded URI
  Throws:
    `IllegalArgumentException` - if `uriVariables` is `null` or if it does not contain sufficient variables

### matches

    public boolean matches(String uri)

  Indicate whether the given URI matches this template.

  Parameters:
    `uri` - the URI to match to
  Returns:
    `true` if it matches; `false` otherwise

### match

    public Map<String,String> match(String uri)

  Match the given URI to a map of variable values. Keys in the returned map are variable names, values are variable values, as occurred in the given URI.

  Example:

       UriTemplate template = new UriTemplate("http://example.com/hotels/{hotel}/bookings/{booking}");
       System.out.println(template.match("http://example.com/hotels/1/bookings/42"));

  will print:

  > `{hotel=1, booking=42}`

  Parameters:
    `uri` - the URI to match to
  Returns:
    a map of variable values

### encodeUri

    protected URI encodeUri(String uri)

  Encodes the given String as URL.

  Defaults to `UriUtils.encodeUri(String, String)`.

  Parameters:
    `uri` - the URI to encode
  Returns:
    the encoded URI

### toString

    public String toString()

  Overrides:
    `toString` in class `Object`