org.springframework.web.util

## Class UriComponents

- java.lang.Object
- - org.springframework.web.util.UriComponents

- All Implemented Interfaces:
    Serializable

      public abstract class UriComponents
      extends Object
      implements Serializable

  Represents an immutable collection of URI components, mapping component type to string values. Contains convenience getters for all components. Effectively similar to `URI`, but with more powerful encoding options and support for URI template variables.
  Since:
    3.1
  Author:
    Arjen Poutsma
  See Also:
    `UriComponentsBuilder`, Serialized Form

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `UriComponents.UriTemplateVariables` Defines the contract for URI Template variables

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `UriComponents(String scheme, String fragment)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `UriComponents` | `encode()` Encode all URI components using their specific encoding rules, and returns the result as a new `UriComponents` instance.
    `abstract UriComponents` | `encode(String encoding)` Encode all URI components using their specific encoding rules, and returns the result as a new `UriComponents` instance.
    `UriComponents` | `expand(Map<String,?> uriVariables)` Replaces all URI template variables with the values from a given map.
    `UriComponents` | `expand(Object... uriVariableValues)` Replaces all URI template variables with the values from a given array.
    `UriComponents` | `expand(UriComponents.UriTemplateVariables uriTemplateVars)` Replaces all URI template variables with the values obtained through the given `UriComponents.UriTemplateVariables` instance.
    `String` | `getFragment()` Returns the fragment.
    `abstract String` | `getHost()` Returns the host.
    `abstract String` | `getPath()` Returns the path.
    `abstract List<String>` | `getPathSegments()` Returns the list of path segments.
    `abstract int` | `getPort()` Returns the port.
    `abstract String` | `getQuery()` Returns the query.
    `abstract MultiValueMap<String,String>` | `getQueryParams()` Returns the map of query parameters.
    `String` | `getScheme()` Returns the scheme.
    `abstract String` | `getSchemeSpecificPart()` Returns the scheme specific part.
    `abstract String` | `getUserInfo()` Returns the user info.
    `abstract UriComponents` | `normalize()` Normalize the path removing sequences like "path/..".
    `String` | `toString()`
    `abstract URI` | `toUri()` Returns a `URI` from this `UriComponents` instance.
    `abstract String` | `toUriString()` Returns a URI string from this `UriComponents` instance.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### UriComponents

          protected UriComponents(String scheme,
                                  String fragment)

  - ### Method Detail

    - #### getScheme

          public final String getScheme()

      Returns the scheme. Can be `null`.

    - #### getSchemeSpecificPart

          public abstract String getSchemeSpecificPart()

      Returns the scheme specific part. Can be `null`.

    - #### getUserInfo

          public abstract String getUserInfo()

      Returns the user info. Can be `null`.

    - #### getHost

          public abstract String getHost()

      Returns the host. Can be `null`.

    - #### getPort

          public abstract int getPort()

      Returns the port. Returns `-1` if no port has been set.

    - #### getPath

          public abstract String getPath()

      Returns the path. Can be `null`.

    - #### getPathSegments

          public abstract List<String> getPathSegments()

      Returns the list of path segments. Empty if no path has been set.

    - #### getQuery

          public abstract String getQuery()

      Returns the query. Can be `null`.

    - #### getQueryParams

          public abstract MultiValueMap<String,String> getQueryParams()

      Returns the map of query parameters. Empty if no query has been set.

    - #### getFragment

          public final String getFragment()

      Returns the fragment. Can be `null`.

    - #### encode

          public final UriComponents encode()

      Encode all URI components using their specific encoding rules, and returns the result as a new `UriComponents` instance. This method uses UTF-8 to encode.
      Returns:
        the encoded uri components

    - #### encode

          public abstract UriComponents encode(String encoding)
                                        throws UnsupportedEncodingException

      Encode all URI components using their specific encoding rules, and returns the result as a new `UriComponents` instance.
      Parameters:
        `encoding` - the encoding of the values contained in this map
      Returns:
        the encoded uri components
      Throws:
        `UnsupportedEncodingException` - if the given encoding is not supported

    - #### expand

          public final UriComponents expand(Map<String,?> uriVariables)

      Replaces all URI template variables with the values from a given map. The map keys represent variable names; the values variable values. The order of variables is not significant.
      Parameters:
        `uriVariables` - the map of URI variables
      Returns:
        the expanded uri components

    - #### expand

          public final UriComponents expand(Object... uriVariableValues)

      Replaces all URI template variables with the values from a given array. The array represent variable values. The order of variables is significant.
      Parameters:
        `uriVariableValues` - URI variable values
      Returns:
        the expanded uri components

    - #### expand

          public final UriComponents expand(UriComponents.UriTemplateVariables uriTemplateVars)

      Replaces all URI template variables with the values obtained through the given `UriComponents.UriTemplateVariables` instance.
      Parameters:
        `uriTemplateVars` - resolves URI template variable values
      Returns:
        the expanded uri components

    - #### normalize

          public abstract UriComponents normalize()

      Normalize the path removing sequences like "path/..".
      See Also:
        `StringUtils.cleanPath(String)`

    - #### toUriString

          public abstract String toUriString()

      Returns a URI string from this `UriComponents` instance.

    - #### toUri

          public abstract URI toUri()

      Returns a `URI` from this `UriComponents` instance.

    - #### toString

          public final String toString()

      Overrides:
        `toString` in class `Object`