org.springframework.web.util

## Class UriComponents

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

-     public abstract class UriComponents
      extends Object

  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`

- - ### Constructor Summary

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

  - ### Method Summary

    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.
    `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

    - #### 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`

    - #### normalize

          public abstract UriComponents normalize()

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