Class RestRequest

java.lang.Object
org.elasticsearch.rest.RestRequest
All Implemented Interfaces:
org.elasticsearch.common.xcontent.ToXContent.Params

public class RestRequest
extends java.lang.Object
implements org.elasticsearch.common.xcontent.ToXContent.Params
  • Nested Class Summary

    Nested Classes
    Modifier and Type Class Description
    static class  RestRequest.BadParameterException  
    static class  RestRequest.ContentTypeHeaderException  
    static class  RestRequest.Method  
  • Constructor Summary

    Constructors
    Modifier Constructor Description
    protected RestRequest​(org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, java.util.Map<java.lang.String,​java.lang.String> params, java.lang.String path, java.util.Map<java.lang.String,​java.util.List<java.lang.String>> headers, HttpRequest httpRequest, HttpChannel httpChannel)  
    protected RestRequest​(RestRequest restRequest)  
  • Method Summary

    Modifier and Type Method Description
    void applyContentParser​(org.elasticsearch.common.CheckedConsumer<org.elasticsearch.common.xcontent.XContentParser,​java.io.IOException> applyParser)
    If there is any content then call applyParser with the parser, otherwise do nothing.
    BytesReference content()  
    int contentLength()  
    org.elasticsearch.common.collect.Tuple<org.elasticsearch.common.xcontent.XContentType,​BytesReference> contentOrSourceParam()
    Get the content of the request or the contents of the source param or throw an exception if both are missing.
    org.elasticsearch.common.xcontent.XContentParser contentOrSourceParamParser()
    A parser for the contents of this request if it has contents, otherwise a parser for the source parameter if there is one, otherwise throws an ElasticsearchParseException.
    org.elasticsearch.common.xcontent.XContentParser contentParser()
    A parser for the contents of this request if there is a body, otherwise throws an ElasticsearchParseException.
    java.util.List<java.lang.String> getAllHeaderValues​(java.lang.String name)
    Get all values for the header or null if the header was not found
    java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getHeaders()
    Get all of the headers and values associated with the headers.
    HttpChannel getHttpChannel()  
    HttpRequest getHttpRequest()  
    long getRequestId()  
    org.elasticsearch.common.xcontent.NamedXContentRegistry getXContentRegistry()
    Get the NamedXContentRegistry that should be used to create parsers from this request.
    org.elasticsearch.common.xcontent.XContentType getXContentType()
    The XContentType that was parsed from the Content-Type header.
    boolean hasContent()  
    boolean hasContentOrSourceParam()
    Does this request have content or a source parameter? Use this instead of hasContent() if this RestHandler treats the source parameter like the body content.
    boolean hasParam​(java.lang.String key)  
    java.lang.String header​(java.lang.String name)
    Get the value of the header or null if not found.
    boolean isContentConsumed()  
    RestRequest.Method method()
    Returns the HTTP method used in the REST request.
    java.lang.String param​(java.lang.String key)  
    java.lang.String param​(java.lang.String key, java.lang.String defaultValue)  
    boolean paramAsBoolean​(java.lang.String key, boolean defaultValue)  
    java.lang.Boolean paramAsBoolean​(java.lang.String key, java.lang.Boolean defaultValue)  
    double paramAsDouble​(java.lang.String key, double defaultValue)  
    float paramAsFloat​(java.lang.String key, float defaultValue)  
    int paramAsInt​(java.lang.String key, int defaultValue)  
    long paramAsLong​(java.lang.String key, long defaultValue)  
    ByteSizeValue paramAsSize​(java.lang.String key, ByteSizeValue defaultValue)  
    java.lang.String[] paramAsStringArray​(java.lang.String key, java.lang.String[] defaultValue)  
    java.lang.String[] paramAsStringArrayOrEmptyIfAll​(java.lang.String key)  
    org.elasticsearch.common.unit.TimeValue paramAsTime​(java.lang.String key, org.elasticsearch.common.unit.TimeValue defaultValue)  
    java.util.Map<java.lang.String,​java.lang.String> params()  
    static org.elasticsearch.common.xcontent.XContentType parseContentType​(java.util.List<java.lang.String> header)
    Parses the given content type string for the media type.
    java.lang.String path()
    The path part of the URI (without the query string), decoded.
    java.lang.String rawPath()
    The non decoded, raw path provided.
    static RestRequest request​(org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, HttpRequest httpRequest, HttpChannel httpChannel)
    Creates a new REST request.
    static RestRequest requestWithoutParameters​(org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, HttpRequest httpRequest, HttpChannel httpChannel)
    Creates a new REST request.
    BytesReference requiredContent()  
    java.lang.String uri()
    The uri of the rest request, with the query string.
    void withContentOrSourceParamParserOrNull​(org.elasticsearch.common.CheckedConsumer<org.elasticsearch.common.xcontent.XContentParser,​java.io.IOException> withParser)
    Call a consumer with the parser for the contents of this request if it has contents, otherwise with a parser for the source parameter if there is one, otherwise with null.

    Methods inherited from class java.lang.Object

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

    • RestRequest

      protected RestRequest​(org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, java.util.Map<java.lang.String,​java.lang.String> params, java.lang.String path, java.util.Map<java.lang.String,​java.util.List<java.lang.String>> headers, HttpRequest httpRequest, HttpChannel httpChannel)
    • RestRequest

      protected RestRequest​(RestRequest restRequest)
  • Method Details

    • isContentConsumed

      public boolean isContentConsumed()
    • request

      public static RestRequest request​(org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, HttpRequest httpRequest, HttpChannel httpChannel)
      Creates a new REST request. This method will throw RestRequest.BadParameterException if the path cannot be decoded
      Parameters:
      xContentRegistry - the content registry
      httpRequest - the http request
      httpChannel - the http channel
      Throws:
      RestRequest.BadParameterException - if the parameters can not be decoded
      RestRequest.ContentTypeHeaderException - if the Content-Type header can not be parsed
    • requestWithoutParameters

      public static RestRequest requestWithoutParameters​(org.elasticsearch.common.xcontent.NamedXContentRegistry xContentRegistry, HttpRequest httpRequest, HttpChannel httpChannel)
      Creates a new REST request. The path is not decoded so this constructor will not throw a RestRequest.BadParameterException.
      Parameters:
      xContentRegistry - the content registry
      httpRequest - the http request
      httpChannel - the http channel
      Throws:
      RestRequest.ContentTypeHeaderException - if the Content-Type header can not be parsed
    • method

      public RestRequest.Method method()
      Returns the HTTP method used in the REST request.
      Returns:
      the RestRequest.Method used in the REST request
      Throws:
      java.lang.IllegalArgumentException - if the HTTP method is invalid
    • uri

      public java.lang.String uri()
      The uri of the rest request, with the query string.
    • rawPath

      public java.lang.String rawPath()
      The non decoded, raw path provided.
    • path

      public final java.lang.String path()
      The path part of the URI (without the query string), decoded.
    • hasContent

      public boolean hasContent()
    • contentLength

      public int contentLength()
    • content

      public BytesReference content()
    • requiredContent

      public final BytesReference requiredContent()
      Returns:
      content of the request body or throw an exception if the body or content type is missing
    • header

      public final java.lang.String header​(java.lang.String name)
      Get the value of the header or null if not found. This method only retrieves the first header value if multiple values are sent. Use of getAllHeaderValues(String) should be preferred
    • getAllHeaderValues

      public final java.util.List<java.lang.String> getAllHeaderValues​(java.lang.String name)
      Get all values for the header or null if the header was not found
    • getHeaders

      public final java.util.Map<java.lang.String,​java.util.List<java.lang.String>> getHeaders()
      Get all of the headers and values associated with the headers. Modifications of this map are not supported.
    • getRequestId

      public final long getRequestId()
    • getXContentType

      @Nullable public final org.elasticsearch.common.xcontent.XContentType getXContentType()
      The XContentType that was parsed from the Content-Type header. This value will be null in the case of a request without a valid Content-Type header, a request without content (hasContent(), or a plain text request
    • getHttpChannel

      public HttpChannel getHttpChannel()
    • getHttpRequest

      public HttpRequest getHttpRequest()
    • hasParam

      public final boolean hasParam​(java.lang.String key)
    • param

      public final java.lang.String param​(java.lang.String key)
      Specified by:
      param in interface org.elasticsearch.common.xcontent.ToXContent.Params
    • param

      public final java.lang.String param​(java.lang.String key, java.lang.String defaultValue)
      Specified by:
      param in interface org.elasticsearch.common.xcontent.ToXContent.Params
    • params

      public java.util.Map<java.lang.String,​java.lang.String> params()
    • paramAsFloat

      public float paramAsFloat​(java.lang.String key, float defaultValue)
    • paramAsDouble

      public double paramAsDouble​(java.lang.String key, double defaultValue)
    • paramAsInt

      public int paramAsInt​(java.lang.String key, int defaultValue)
    • paramAsLong

      public long paramAsLong​(java.lang.String key, long defaultValue)
    • paramAsBoolean

      public boolean paramAsBoolean​(java.lang.String key, boolean defaultValue)
      Specified by:
      paramAsBoolean in interface org.elasticsearch.common.xcontent.ToXContent.Params
    • paramAsBoolean

      public java.lang.Boolean paramAsBoolean​(java.lang.String key, java.lang.Boolean defaultValue)
      Specified by:
      paramAsBoolean in interface org.elasticsearch.common.xcontent.ToXContent.Params
    • paramAsTime

      public org.elasticsearch.common.unit.TimeValue paramAsTime​(java.lang.String key, org.elasticsearch.common.unit.TimeValue defaultValue)
    • paramAsSize

      public ByteSizeValue paramAsSize​(java.lang.String key, ByteSizeValue defaultValue)
    • paramAsStringArray

      public java.lang.String[] paramAsStringArray​(java.lang.String key, java.lang.String[] defaultValue)
    • paramAsStringArrayOrEmptyIfAll

      public java.lang.String[] paramAsStringArrayOrEmptyIfAll​(java.lang.String key)
    • getXContentRegistry

      public org.elasticsearch.common.xcontent.NamedXContentRegistry getXContentRegistry()
      Get the NamedXContentRegistry that should be used to create parsers from this request.
    • contentParser

      public final org.elasticsearch.common.xcontent.XContentParser contentParser() throws java.io.IOException
      A parser for the contents of this request if there is a body, otherwise throws an ElasticsearchParseException. Use applyContentParser(CheckedConsumer) if you want to gracefully handle when the request doesn't have any contents. Use contentOrSourceParamParser() for requests that support specifying the request body in the source param.
      Throws:
      java.io.IOException
    • applyContentParser

      public final void applyContentParser​(org.elasticsearch.common.CheckedConsumer<org.elasticsearch.common.xcontent.XContentParser,​java.io.IOException> applyParser) throws java.io.IOException
      If there is any content then call applyParser with the parser, otherwise do nothing.
      Throws:
      java.io.IOException
    • hasContentOrSourceParam

      public final boolean hasContentOrSourceParam()
      Does this request have content or a source parameter? Use this instead of hasContent() if this RestHandler treats the source parameter like the body content.
    • contentOrSourceParamParser

      public final org.elasticsearch.common.xcontent.XContentParser contentOrSourceParamParser() throws java.io.IOException
      A parser for the contents of this request if it has contents, otherwise a parser for the source parameter if there is one, otherwise throws an ElasticsearchParseException. Use withContentOrSourceParamParserOrNull(CheckedConsumer) instead if you need to handle the absence request content gracefully.
      Throws:
      java.io.IOException
    • withContentOrSourceParamParserOrNull

      public final void withContentOrSourceParamParserOrNull​(org.elasticsearch.common.CheckedConsumer<org.elasticsearch.common.xcontent.XContentParser,​java.io.IOException> withParser) throws java.io.IOException
      Call a consumer with the parser for the contents of this request if it has contents, otherwise with a parser for the source parameter if there is one, otherwise with null. Use contentOrSourceParamParser() if you should throw an exception back to the user when there isn't request content.
      Throws:
      java.io.IOException
    • contentOrSourceParam

      public final org.elasticsearch.common.collect.Tuple<org.elasticsearch.common.xcontent.XContentType,​BytesReference> contentOrSourceParam()
      Get the content of the request or the contents of the source param or throw an exception if both are missing. Prefer contentOrSourceParamParser() or withContentOrSourceParamParserOrNull(CheckedConsumer) if you need a parser.
    • parseContentType

      public static org.elasticsearch.common.xcontent.XContentType parseContentType​(java.util.List<java.lang.String> header)
      Parses the given content type string for the media type. This method currently ignores parameters.