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

### Constructor Summary

Constructors
`protected` `UriComponents(String scheme, String fragment)`

### Method Summary

Methods
`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)`