类 UriUtils

java.lang.Object
cn.taketoday.web.util.UriUtils

public abstract class UriUtils extends Object
Utility methods for URI encoding and decoding based on RFC 3986.

There are two types of encode methods:

  • "encodeXyz" -- these encode a specific URI component (e.g. path, query) by percent encoding illegal characters, which includes non-US-ASCII characters, and also characters that are otherwise illegal within the given URI component type, as defined in RFC 3986. The effect of this method, with regards to encoding, is comparable to using the multi-argument constructor of URI.
  • "encode" and "encodeUriVariables" -- these can be used to encode URI variable values by percent encoding all characters that are either illegal, or have any reserved meaning, anywhere within a URI.
从以下版本开始:
4.0
作者:
Arjen Poutsma, Juergen Hoeller, Rossen Stoyanchev
另请参阅:
  • 构造器详细资料

    • UriUtils

      public UriUtils()
  • 方法详细资料

    • encodeScheme

      public static String encodeScheme(String scheme, String encoding)
      Encode the given URI scheme with the given encoding.
      参数:
      scheme - the scheme to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded scheme
    • encodeScheme

      public static String encodeScheme(String scheme, Charset charset)
      Encode the given URI scheme with the given encoding.
      参数:
      scheme - the scheme to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded scheme
    • encodeAuthority

      public static String encodeAuthority(String authority, String encoding)
      Encode the given URI authority with the given encoding.
      参数:
      authority - the authority to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded authority
    • encodeAuthority

      public static String encodeAuthority(String authority, Charset charset)
      Encode the given URI authority with the given encoding.
      参数:
      authority - the authority to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded authority
    • encodeUserInfo

      public static String encodeUserInfo(String userInfo, String encoding)
      Encode the given URI user info with the given encoding.
      参数:
      userInfo - the user info to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded user info
    • encodeUserInfo

      public static String encodeUserInfo(String userInfo, Charset charset)
      Encode the given URI user info with the given encoding.
      参数:
      userInfo - the user info to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded user info
    • encodeHost

      public static String encodeHost(String host, String encoding)
      Encode the given URI host with the given encoding.
      参数:
      host - the host to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded host
    • encodeHost

      public static String encodeHost(String host, Charset charset)
      Encode the given URI host with the given encoding.
      参数:
      host - the host to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded host
    • encodePort

      public static String encodePort(String port, String encoding)
      Encode the given URI port with the given encoding.
      参数:
      port - the port to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded port
    • encodePort

      public static String encodePort(String port, Charset charset)
      Encode the given URI port with the given encoding.
      参数:
      port - the port to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded port
    • encodePath

      public static String encodePath(String path, String encoding)
      Encode the given URI path with the given encoding.
      参数:
      path - the path to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded path
    • encodePath

      public static String encodePath(String path, Charset charset)
      Encode the given URI path with the given encoding.
      参数:
      path - the path to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded path
    • encodePathSegment

      public static String encodePathSegment(String segment, String encoding)
      Encode the given URI path segment with the given encoding.
      参数:
      segment - the segment to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded segment
    • encodePathSegment

      public static String encodePathSegment(String segment, Charset charset)
      Encode the given URI path segment with the given encoding.
      参数:
      segment - the segment to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded segment
    • encodeQuery

      public static String encodeQuery(String query, String encoding)
      Encode the given URI query with the given encoding.
      参数:
      query - the query to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded query
    • encodeQuery

      public static String encodeQuery(String query, Charset charset)
      Encode the given URI query with the given encoding.
      参数:
      query - the query to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded query
    • encodeQueryParam

      public static String encodeQueryParam(String queryParam, String encoding)
      Encode the given URI query parameter with the given encoding.
      参数:
      queryParam - the query parameter to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded query parameter
    • encodeQueryParam

      public static String encodeQueryParam(String queryParam, Charset charset)
      Encode the given URI query parameter with the given encoding.
      参数:
      queryParam - the query parameter to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded query parameter
    • encodeQueryParams

      public static cn.taketoday.util.MultiValueMap<String,String> encodeQueryParams(cn.taketoday.util.MultiValueMap<String,String> params)
      Encode the query parameters from the given MultiValueMap with UTF-8.

      This can be used with UriComponentsBuilder.queryParams(MultiValueMap) when building a URI from an already encoded template.

      
       MultiValueMap<String, String> params = new DefaultMultiValueMap<>(2);
       // add to params...
      
       ServletUriComponentsBuilder.fromCurrentRequest()
               .queryParams(UriUtils.encodeQueryParams(params))
               .build(true)
               .toUriString();
       
      参数:
      params - the parameters to encode
      返回:
      a new MultiValueMap with the encoded names and values
    • encodeFragment

      public static String encodeFragment(String fragment, String encoding)
      Encode the given URI fragment with the given encoding.
      参数:
      fragment - the fragment to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded fragment
    • encodeFragment

      public static String encodeFragment(String fragment, Charset charset)
      Encode the given URI fragment with the given encoding.
      参数:
      fragment - the fragment to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded fragment
    • encode

      public static String encode(String source, String encoding)
      Variant of encode(String, Charset) with a String charset.
      参数:
      source - the String to be encoded
      encoding - the character encoding to encode to
      返回:
      the encoded String
    • encode

      public static String encode(String source, Charset charset)
      Encode all characters that are either illegal, or have any reserved meaning, anywhere within a URI, as defined in RFC 3986. This is useful to ensure that the given String will be preserved as-is and will not have any o impact on the structure or meaning of the URI.
      参数:
      source - the String to be encoded
      charset - the character encoding to encode to
      返回:
      the encoded String
    • encodeUriVariables

      public static Map<String,String> encodeUriVariables(Map<String,?> uriVariables)
      Convenience method to apply encode(String, Charset) to all given URI variable values.
      参数:
      uriVariables - the URI variable values to be encoded
      返回:
      the encoded String
    • encodeUriVariables

      public static Object[] encodeUriVariables(Object... uriVariables)
      Convenience method to apply encode(String, Charset) to all given URI variable values.
      参数:
      uriVariables - the URI variable values to be encoded
      返回:
      the encoded String
    • encode

      private static String encode(String scheme, String encoding, HierarchicalUriComponents.Type type)
    • encode

      private static String encode(String scheme, Charset charset, HierarchicalUriComponents.Type type)
    • decode

      public static String decode(String source, String encoding)
      Decode the given encoded URI component.

      See StringUtils.uriDecode(String, Charset) for the decoding rules.

      参数:
      source - the encoded String
      encoding - the character encoding to use
      返回:
      the decoded value
      抛出:
      IllegalArgumentException - when the given source contains invalid encoded sequences
      另请参阅:
    • decode

      public static String decode(String source, Charset charset)
      Decode the given encoded URI component.

      See StringUtils.uriDecode(String, Charset) for the decoding rules.

      参数:
      source - the encoded String
      charset - the character encoding to use
      返回:
      the decoded value
      抛出:
      IllegalArgumentException - when the given source contains invalid encoded sequences
      另请参阅:
    • extractFileExtension

      @Nullable public static String extractFileExtension(String path)
      Extract the file extension from the given URI path.
      参数:
      path - the URI path (e.g. "/products/index.html")
      返回:
      the extracted file extension (e.g. "html")