Class QueryStringDecoder

java.lang.Object
io.micronaut.http.poja.util.QueryStringDecoder

@Deprecated(forRemoval=true, since="5.2.0") public class QueryStringDecoder extends Object
Deprecated, for removal: This API element is subject to removal in a future version.
Use QueryStringDecoder instead.
Splits an HTTP query string into a path string and key-value parameter pairs. This decoder is for one time use only. Create a new instance for each URI:
 QueryStringDecoder decoder = new QueryStringDecoder("/hello?recipient=world&x=1;y=2");
 assert decoder.path().equals("/hello");
 assert decoder.parameters().get("recipient").get(0).equals("world");
 assert decoder.parameters().get("x").get(0).equals("1");
 assert decoder.parameters().get("y").get(0).equals("2");
 
This decoder can also decode the content of an HTTP POST request whose content type is application/x-www-form-urlencoded:
 QueryStringDecoder decoder = new QueryStringDecoder("recipient=world&x=1;y=2", false);
 ...
 
HashDOS vulnerability fix As a workaround to the HashDOS vulnerability, the decoder limits the maximum number of decoded key-value parameter pairs, up to 1024 by default, and you can configure it when you construct the decoder by passing an additional integer parameter.

This is forked from Netty. See QueryStringDecoder.java .

  • Constructor Summary

    Constructors
    Constructor
    Description
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI.
    QueryStringDecoder(String uri, boolean hasPath)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    QueryStringDecoder(String uri, Charset charset, boolean hasPath)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    QueryStringDecoder(String uri, Charset charset, boolean hasPath, int maxParams)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    QueryStringDecoder(String uri, Charset charset, boolean hasPath, int maxParams, boolean semicolonIsNormalChar)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    QueryStringDecoder(URI uri, Charset charset, int maxParams)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
    QueryStringDecoder(URI uri, Charset charset, int maxParams, boolean semicolonIsNormalChar)
    Deprecated, for removal: This API element is subject to removal in a future version.
    Creates a new decoder that decodes the specified URI encoded in the specified charset.
  • Method Summary

    Modifier and Type
    Method
    Description
    static String
    Deprecated, for removal: This API element is subject to removal in a future version.
    Decodes a bit of a URL encoded by a browser.
    static String
    Deprecated, for removal: This API element is subject to removal in a future version.
    Decodes a bit of a URL encoded by a browser.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the decoded key-value parameter pairs of the URI.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the decoded path string of the URI.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the raw path string of the URI.
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns raw query string of the URI.
    Deprecated, for removal: This API element is subject to removal in a future version.
     
    uri()
    Deprecated, for removal: This API element is subject to removal in a future version.
    Returns the uri used to initialize this QueryStringDecoder.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • QueryStringDecoder

      public QueryStringDecoder(String uri)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI. The decoder will assume that the query string is encoded in UTF-8.
    • QueryStringDecoder

      public QueryStringDecoder(String uri, boolean hasPath)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(String uri, Charset charset)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(String uri, Charset charset, boolean hasPath)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(String uri, Charset charset, boolean hasPath, int maxParams)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(String uri, Charset charset, boolean hasPath, int maxParams, boolean semicolonIsNormalChar)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(URI uri)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI. The decoder will assume that the query string is encoded in UTF-8.
    • QueryStringDecoder

      public QueryStringDecoder(URI uri, Charset charset)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(URI uri, Charset charset, int maxParams)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
    • QueryStringDecoder

      public QueryStringDecoder(URI uri, Charset charset, int maxParams, boolean semicolonIsNormalChar)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Creates a new decoder that decodes the specified URI encoded in the specified charset.
  • Method Details

    • toString

      public String toString()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Overrides:
      toString in class Object
    • uri

      public String uri()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the uri used to initialize this QueryStringDecoder.
    • path

      public String path()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the decoded path string of the URI.
    • parameters

      public Map<String,List<String>> parameters()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the decoded key-value parameter pairs of the URI.
    • rawPath

      public String rawPath()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the raw path string of the URI.
    • rawQuery

      public String rawQuery()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns raw query string of the URI.
    • decodeComponent

      public static String decodeComponent(String s)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Decodes a bit of a URL encoded by a browser.

      This is equivalent to calling decodeComponent(String, Charset) with the UTF-8 charset (recommended to comply with RFC 3986, Section 2).

      Parameters:
      s - The string to decode (can be empty).
      Returns:
      The decoded string, or s if there's nothing to decode. If the string to decode is null, returns an empty string.
      Throws:
      IllegalArgumentException - if the string contains a malformed escape sequence.
    • decodeComponent

      public static String decodeComponent(String s, Charset charset)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Decodes a bit of a URL encoded by a browser.

      The string is expected to be encoded as per RFC 3986, Section 2. This is the encoding used by JavaScript functions encodeURI and encodeURIComponent, but not escape. For example in this encoding, é (in Unicode U+00E9 or in UTF-8 0xC3 0xA9) is encoded as %C3%A9 or %c3%a9.

      This is essentially equivalent to calling URLDecoder.decode(String, String) except that it's over 2x faster and generates less garbage for the GC. Actually this function doesn't allocate any memory if there's nothing to decode, the argument itself is returned.

      Parameters:
      s - The string to decode (can be empty).
      charset - The charset to use to decode the string (should really be StandardCharsets.UTF_8.
      Returns:
      The decoded string, or s if there's nothing to decode. If the string to decode is null, returns an empty string.
      Throws:
      IllegalArgumentException - if the string contains a malformed escape sequence.