Interface UriBuilder

    • Method Detail

      • scheme

        UriBuilder scheme​(@Nullable
                          String scheme)
        Set the URI scheme which may contain URI template variables, and may also be null to clear the scheme of this builder.
        Parameters:
        scheme - the URI scheme
      • userInfo

        UriBuilder userInfo​(@Nullable
                            String userInfo)
        Set the URI user info which may contain URI template variables, and may also be null to clear the user info of this builder.
        Parameters:
        userInfo - the URI user info
      • host

        UriBuilder host​(@Nullable
                        String host)
        Set the URI host which may contain URI template variables, and may also be null to clear the host of this builder.
        Parameters:
        host - the URI host
      • port

        UriBuilder port​(int port)
        Set the URI port. Passing -1 will clear the port of this builder.
        Parameters:
        port - the URI port
      • port

        UriBuilder port​(@Nullable
                        String port)
        Set the URI port . Use this method only when the port needs to be parameterized with a URI variable. Otherwise use port(int). Passing null will clear the port of this builder.
        Parameters:
        port - the URI port
      • path

        UriBuilder path​(String path)
        Append to the path of this builder.

        The given value is appended as-is without any checks for slashes other than to clean up duplicates. For example:

        
         builder.path("/first-").path("value/").path("/{id}").build("123")
        
         // Results is "/first-value/123"
         

        By contrast pathSegment(String...) builds the path from individual path segments and in that case slashes are inserted transparently. In some cases you may use a combination of both pathSegment and path. For example:

        
         builder.pathSegment("first-value", "second-value").path("/")
        
         // Results is "/first-value/second-value/"
        
         

        If a URI variable value contains slashes, whether those are encoded or not depends on the configured encoding mode. See UriComponentsBuilder.encode(), or if using UriComponentsBuilder via DefaultUriBuilderFactory (e.g. WebClient or RestTemplate) see its encodingMode property. Also see the URI Encoding section of the reference docs.

        Parameters:
        path - the URI path
      • pathSegment

        UriBuilder pathSegment​(String... pathSegments)
                        throws IllegalArgumentException
        Append to the path using path segments. For example:
        
         builder.pathSegment("first-value", "second-value", "{id}").build("123")
        
         // Results is "/first-value/second-value/123"
        
         

        If slashes are present in a path segment, they are encoded:

        
         builder.pathSegment("ba/z", "{id}").build("a/b")
        
         // Results is "/ba%2Fz/a%2Fb"
        
         
        To insert a trailing slash, use the path(java.lang.String) builder method:
        
         builder.pathSegment("first-value", "second-value").path("/")
        
         // Results is "/first-value/second-value/"
        
         
        Parameters:
        pathSegments - the URI path segments
        Throws:
        IllegalArgumentException
      • query

        UriBuilder query​(String query)
        Parse the given query string into query parameters where parameters are separated with '&' and their values, if any, with '='. The query may contain URI template variables.

        Note: please, review the Javadoc of queryParam(String, Object...) for further notes on the treatment and encoding of individual query parameters.

        Parameters:
        query - the query string
      • queryParam

        UriBuilder queryParam​(String name,
                              Object... values)
        Append the given query parameter. Both the parameter name and values may contain URI template variables to be expanded later from values. If no values are given, the resulting URI will contain the query parameter name only, e.g. "?foo" instead of "?foo=bar".

        Note: encoding, if applied, will only encode characters that are illegal in a query parameter name or value such as "=" or "&". All others that are legal as per syntax rules in RFC 3986 are not encoded. This includes "+" which sometimes needs to be encoded to avoid its interpretation as an encoded space. Stricter encoding may be applied by using a URI template variable along with stricter encoding on variable values. For more details please read the "URI Encoding" section of the Spring Framework reference.

        Parameters:
        name - the query parameter name
        values - the query parameter values
        See Also:
        queryParam(String, Collection)
      • fragment

        UriBuilder fragment​(@Nullable
                            String fragment)
        Set the URI fragment. The given fragment may contain URI template variables, and may also be null to clear the fragment of this builder.
        Parameters:
        fragment - the URI fragment
      • build

        URI build​(Object... uriVariables)
        Build a URI instance and replaces URI template variables with the values from an array.
        Parameters:
        uriVariables - the map of URI variables
        Returns:
        the URI
      • build

        URI build​(Map<String,​?> uriVariables)
        Build a URI instance and replaces URI template variables with the values from a map.
        Parameters:
        uriVariables - the map of URI variables
        Returns:
        the URI