Package 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
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
Description
`RequestEntity(HttpMethod method, URI url)`
Constructor with method and URL but without body nor headers.
`RequestEntity(org.springframework.util.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, org.springframework.util.MultiValueMap<String,String> headers, HttpMethod method, URI url)`
Constructor with method, URL, headers and body.
`RequestEntity(T body, org.springframework.util.MultiValueMap<String,String> headers, HttpMethod method, URI url, Type type)`
Constructor with method, URL, headers, body and type.

## Method Summary

Modifier and Type
Method
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, Object... uriVariables)`
Create a builder with the given HTTP method, URI template, and variables.
`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, 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 Details

### 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(org.springframework.util.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 org.springframework.util.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 org.springframework.util.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 Details

### 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