org.springframework.http

## Class RequestEntity<T>

- java.lang.Object
- - org.springframework.http.HttpEntity<T>
  - - org.springframework.http.RequestEntity<T>

- Type Parameters:
    `T` - the body type
  Direct Known Subclasses:
    RequestEntity.UriTemplateRequestEntity

      public class RequestEntity<T>
      extends HttpEntity<T>

  Extension of `HttpEntity` that also exposes the HTTP method and the target URL. For use in the `RestTemplate` to prepare requests with and in `@Controller` methods to represent request input.

  Example use with the `RestTemplate`:

       MyRequest body = ...
       RequestEntity<MyRequest> request = RequestEntity
           .post("https://example.com/{foo}", "bar")
           .accept(MediaType.APPLICATION_JSON)
           .body(body);
       ResponseEntity<MyResponse> response = template.exchange(request, MyResponse.class);

  Example use in an `@Controller`:

       @RequestMapping("/handle")
       public void handle(RequestEntity<String> request) {
         HttpMethod method = request.getMethod();
         URI url = request.getUrl();
         String body = request.getBody();
       }

  Since:
    4.1
  Author:
    Arjen Poutsma, Sebastien Deleuze, Parviz Rozikov
  See Also:
    `getMethod()`, `getUrl()`, `RestOperations.exchange(RequestEntity, Class)`, `ResponseEntity`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `RequestEntity.BodyBuilder` Defines a builder that adds a body to the response entity.
    `static interface` | `RequestEntity.HeadersBuilder<B extends RequestEntity.HeadersBuilder<B>>` Defines a builder that adds headers to the request entity.
    `static class` | `RequestEntity.UriTemplateRequestEntity<T>` RequestEntity initialized with a URI template and variables instead of a `URI`.

  - ### Field Summary

    - ### Fields inherited from class org.springframework.http.HttpEntity

      `EMPTY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RequestEntity(HttpMethod method, URI url)` Constructor with method and URL but without body nor headers.
    `RequestEntity(MultiValueMap<String,String> headers, HttpMethod method, URI url)` Constructor with method, URL and headers but without body.
    `RequestEntity(T body, HttpMethod method, URI url)` Constructor with method, URL and body but without headers.
    `RequestEntity(T body, HttpMethod method, URI url, Type type)` Constructor with method, URL, body and type but without headers.
    `RequestEntity(T body, MultiValueMap<String,String> headers, HttpMethod method, URI url)` Constructor with method, URL, headers and body.
    `RequestEntity(T body, MultiValueMap<String,String> headers, HttpMethod method, URI url, Type type)` Constructor with method, URL, headers, body and type.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static RequestEntity.HeadersBuilder<?>` | `delete(String uriTemplate, Object... uriVariables)` Create an HTTP DELETE builder with the given string base uri template.
    `static RequestEntity.HeadersBuilder<?>` | `delete(URI url)` Create an HTTP DELETE builder with the given url.
    `boolean` | `equals(Object other)`
    `static RequestEntity.HeadersBuilder<?>` | `get(String uriTemplate, Object... uriVariables)` Create an HTTP GET builder with the given string base uri template.
    `static RequestEntity.HeadersBuilder<?>` | `get(URI url)` Create an HTTP GET builder with the given url.
    `HttpMethod` | `getMethod()` Return the HTTP method of the request.
    `Type` | `getType()` Return the type of the request's body.
    `URI` | `getUrl()` Return the `URI` for the target HTTP endpoint.
    `int` | `hashCode()`
    `static RequestEntity.HeadersBuilder<?>` | `head(String uriTemplate, Object... uriVariables)` Create an HTTP HEAD builder with the given string base uri template.
    `static RequestEntity.HeadersBuilder<?>` | `head(URI url)` Create an HTTP HEAD builder with the given url.
    `static RequestEntity.BodyBuilder` | `method(HttpMethod method, String uriTemplate, Map<String,?> uriVariables)` Create a builder with the given HTTP method, URI template, and variables.
    `static RequestEntity.BodyBuilder` | `method(HttpMethod method, String uriTemplate, Object... uriVariables)` Create a builder with the given HTTP method, URI template, and variables.
    `static RequestEntity.BodyBuilder` | `method(HttpMethod method, URI url)` Create a builder with the given method and url.
    `static RequestEntity.HeadersBuilder<?>` | `options(String uriTemplate, Object... uriVariables)` Creates an HTTP OPTIONS builder with the given string base uri template.
    `static RequestEntity.HeadersBuilder<?>` | `options(URI url)` Creates an HTTP OPTIONS builder with the given url.
    `static RequestEntity.BodyBuilder` | `patch(String uriTemplate, Object... uriVariables)` Create an HTTP PATCH builder with the given string base uri template.
    `static RequestEntity.BodyBuilder` | `patch(URI url)` Create an HTTP PATCH builder with the given url.
    `static RequestEntity.BodyBuilder` | `post(String uriTemplate, Object... uriVariables)` Create an HTTP POST builder with the given string base uri template.
    `static RequestEntity.BodyBuilder` | `post(URI url)` Create an HTTP POST builder with the given url.
    `static RequestEntity.BodyBuilder` | `put(String uriTemplate, Object... uriVariables)` Create an HTTP PUT builder with the given string base uri template.
    `static RequestEntity.BodyBuilder` | `put(URI url)` Create an HTTP PUT builder with the given url.
    `String` | `toString()`

    - ### Methods inherited from class org.springframework.http.HttpEntity

      `getBody, getHeaders, hasBody`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### RequestEntity

          public RequestEntity(HttpMethod method,
                               URI url)

      Constructor with method and URL but without body nor headers.
      Parameters:
        `method` - the method
        `url` - the URL

    - #### RequestEntity

          public RequestEntity(@Nullable
                               T body,
                               HttpMethod method,
                               URI url)

      Constructor with method, URL and body but without headers.
      Parameters:
        `body` - the body
        `method` - the method
        `url` - the URL

    - #### RequestEntity

          public RequestEntity(@Nullable
                               T body,
                               HttpMethod method,
                               URI url,
                               Type type)

      Constructor with method, URL, body and type but without headers.
      Parameters:
        `body` - the body
        `method` - the method
        `url` - the URL
        `type` - the type used for generic type resolution
      Since:
        4.3

    - #### RequestEntity

          public RequestEntity(MultiValueMap<String,String> headers,
                               HttpMethod method,
                               URI url)

      Constructor with method, URL and headers but without body.
      Parameters:
        `headers` - the headers
        `method` - the method
        `url` - the URL

    - #### RequestEntity

          public RequestEntity(@Nullable
                               T body,
                               @Nullable
                               MultiValueMap<String,String> headers,
                               @Nullable
                               HttpMethod method,
                               URI url)

      Constructor with method, URL, headers and body.
      Parameters:
        `body` - the body
        `headers` - the headers
        `method` - the method
        `url` - the URL

    - #### RequestEntity

          public RequestEntity(@Nullable
                               T body,
                               @Nullable
                               MultiValueMap<String,String> headers,
                               @Nullable
                               HttpMethod method,
                               @Nullable
                               URI url,
                               @Nullable
                               Type type)

      Constructor with method, URL, headers, body and type.
      Parameters:
        `body` - the body
        `headers` - the headers
        `method` - the method
        `url` - the URL
        `type` - the type used for generic type resolution
      Since:
        4.3

  - ### Method Detail

    - #### getMethod

          @Nullable
          public HttpMethod getMethod()

      Return the HTTP method of the request.
      Returns:
        the HTTP method as an `HttpMethod` enum value

    - #### getUrl

          public URI getUrl()

      Return the `URI` for the target HTTP endpoint.

      Note: This method raises `UnsupportedOperationException` if the `RequestEntity` was created with a URI template and variables rather than with a `URI` instance. This is because a URI cannot be created without further input on how to expand template and encode the URI. In such cases, the `URI` is prepared by the `RestTemplate` with the help of the `UriTemplateHandler` it is configured with.

    - #### getType

          @Nullable
          public Type getType()

      Return the type of the request's body.
      Returns:
        the request's body type, or `null` if not known
      Since:
        4.3

    - #### equals

          public boolean equals(@Nullable
                                Object other)

      Overrides:
        `equals` in class `HttpEntity<T>`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `HttpEntity<T>`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `HttpEntity<T>`

    - #### method

          public static RequestEntity.BodyBuilder method(HttpMethod method,
                                                         URI url)

      Create a builder with the given method and url.
      Parameters:
        `method` - the HTTP method (GET, POST, etc)
        `url` - the URL
      Returns:
        the created builder

    - #### method

          public static RequestEntity.BodyBuilder method(HttpMethod method,
                                                         String uriTemplate,
                                                         Object... uriVariables)

      Create a builder with the given HTTP method, URI template, and variables.
      Parameters:
        `method` - the HTTP method (GET, POST, etc)
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### method

          public static RequestEntity.BodyBuilder method(HttpMethod method,
                                                         String uriTemplate,
                                                         Map<String,?> uriVariables)

      Create a builder with the given HTTP method, URI template, and variables.
      Parameters:
        `method` - the HTTP method (GET, POST, etc)
        `uriTemplate` - the uri template to use
      Returns:
        the created builder
      Since:
        5.3

    - #### get

          public static RequestEntity.HeadersBuilder<?> get(URI url)

      Create an HTTP GET builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### get

          public static RequestEntity.HeadersBuilder<?> get(String uriTemplate,
                                                            Object... uriVariables)

      Create an HTTP GET builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### head

          public static RequestEntity.HeadersBuilder<?> head(URI url)

      Create an HTTP HEAD builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### head

          public static RequestEntity.HeadersBuilder<?> head(String uriTemplate,
                                                             Object... uriVariables)

      Create an HTTP HEAD builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### post

          public static RequestEntity.BodyBuilder post(URI url)

      Create an HTTP POST builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### post

          public static RequestEntity.BodyBuilder post(String uriTemplate,
                                                       Object... uriVariables)

      Create an HTTP POST builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### put

          public static RequestEntity.BodyBuilder put(URI url)

      Create an HTTP PUT builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### put

          public static RequestEntity.BodyBuilder put(String uriTemplate,
                                                      Object... uriVariables)

      Create an HTTP PUT builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### patch

          public static RequestEntity.BodyBuilder patch(URI url)

      Create an HTTP PATCH builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### patch

          public static RequestEntity.BodyBuilder patch(String uriTemplate,
                                                        Object... uriVariables)

      Create an HTTP PATCH builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### delete

          public static RequestEntity.HeadersBuilder<?> delete(URI url)

      Create an HTTP DELETE builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### delete

          public static RequestEntity.HeadersBuilder<?> delete(String uriTemplate,
                                                               Object... uriVariables)

      Create an HTTP DELETE builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3

    - #### options

          public static RequestEntity.HeadersBuilder<?> options(URI url)

      Creates an HTTP OPTIONS builder with the given url.
      Parameters:
        `url` - the URL
      Returns:
        the created builder

    - #### options

          public static RequestEntity.HeadersBuilder<?> options(String uriTemplate,
                                                                Object... uriVariables)

      Creates an HTTP OPTIONS builder with the given string base uri template.
      Parameters:
        `uriTemplate` - the uri template to use
        `uriVariables` - variables to expand the URI template with
      Returns:
        the created builder
      Since:
        5.3