Class TestRestTemplate
RestTemplate
that is suitable for integration tests.
TestRestTemplate
is fault-tolerant. This means that 4xx and 5xx do not result
in an exception being thrown and can instead be detected through the
response entity
and its status code
.
A TestRestTemplate
can optionally carry Basic authentication headers. If Apache
Http Client 4.3.2 or better is available (recommended) it will be used as the client,
and by default configured to ignore cookies and redirects.
Note: To prevent injection problems this class intentionally does not extend
RestTemplate
. If you need access to the underlying RestTemplate
use
getRestTemplate()
.
If you are using the
@SpringBootTest
annotation
with an embedded server, a TestRestTemplate
is automatically available and can
be @Autowired
into your test. If you need customizations (for example to adding
additional message converters) use a RestTemplateBuilder
@Bean
.
- Since:
- 1.4.0
- Author:
- Dave Syer, Phillip Webb, Andy Wilkinson, Kristine Jetzke, Dmytro Nosan, Yanming Zhou
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static class
HttpComponentsClientHttpRequestFactory
to apply customizations.static enum
Options used to customize the Apache HTTP Client. -
Constructor Summary
ConstructorDescriptionTestRestTemplate
(String username, String password, TestRestTemplate.HttpClientOption... httpClientOptions) Create a newTestRestTemplate
instance with the specified credentials.TestRestTemplate
(TestRestTemplate.HttpClientOption... httpClientOptions) Create a newTestRestTemplate
instance.TestRestTemplate
(RestTemplateBuilder restTemplateBuilder) Create a newTestRestTemplate
instance.TestRestTemplate
(RestTemplateBuilder builder, String username, String password, TestRestTemplate.HttpClientOption... httpClientOptions) Create a newTestRestTemplate
instance with the specified credentials. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Delete the resources at the specified URI.void
Delete the resources at the specified URI.void
Delete the resources at the specified URL.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(URI url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(URI url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(RequestEntity<?> requestEntity, Class<T> responseType) Execute the request specified in the givenRequestEntity
and return the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) Execute the request specified in the givenRequestEntity
and return the response asResponseEntity
.<T> T
execute
(String url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Object... urlVariables) Execute the HTTP method to the given URI template, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.<T> T
execute
(String url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Map<String, ?> urlVariables) Execute the HTTP method to the given URI template, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.<T> T
execute
(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor) Execute the HTTP method to the given URL, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.<T> ResponseEntity<T>
getForEntity
(String url, Class<T> responseType, Object... urlVariables) Retrieve an entity by doing a GET on the specified URL.<T> ResponseEntity<T>
getForEntity
(String url, Class<T> responseType, Map<String, ?> urlVariables) Retrieve a representation by doing a GET on the URI template.<T> ResponseEntity<T>
getForEntity
(URI url, Class<T> responseType) Retrieve a representation by doing a GET on the URL .<T> T
getForObject
(String url, Class<T> responseType, Object... urlVariables) Retrieve a representation by doing a GET on the specified URL.<T> T
getForObject
(String url, Class<T> responseType, Map<String, ?> urlVariables) Retrieve a representation by doing a GET on the URI template.<T> T
getForObject
(URI url, Class<T> responseType) Retrieve a representation by doing a GET on the URL .Returns the underlyingRestTemplate
that is actually used to perform the REST operations.Returns the root URI applied byRestTemplateBuilder.rootUri(String)
or""
if the root URI has not been applied.headForHeaders
(String url, Object... urlVariables) Retrieve all headers of the resource specified by the URI template.headForHeaders
(String url, Map<String, ?> urlVariables) Retrieve all headers of the resource specified by the URI template.headForHeaders
(URI url) Retrieve all headers of the resource specified by the URL.optionsForAllow
(String url, Object... urlVariables) Return the value of theAllow
header for the given URI.optionsForAllow
(String url, Map<String, ?> urlVariables) Return the value of theAllow
header for the given URI.optionsForAllow
(URI url) Return the value of theAllow
header for the given URL.<T> T
patchForObject
(String url, Object request, Class<T> responseType, Object... uriVariables) Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.<T> T
Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.<T> T
patchForObject
(URI url, Object request, Class<T> responseType) Update a resource by PATCHing the given object to the URL, and returns the representation found in the response.<T> ResponseEntity<T>
postForEntity
(String url, Object request, Class<T> responseType, Object... urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the response asResponseEntity
.<T> ResponseEntity<T>
Create a new resource by POSTing the given object to the URI template, and returns the response asHttpEntity
.<T> ResponseEntity<T>
postForEntity
(URI url, Object request, Class<T> responseType) Create a new resource by POSTing the given object to the URL, and returns the response asResponseEntity
.postForLocation
(String url, Object request, Object... urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the value of theLocation
header.postForLocation
(String url, Object request, Map<String, ?> urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the value of theLocation
header.postForLocation
(URI url, Object request) Create a new resource by POSTing the given object to the URL, and returns the value of theLocation
header.<T> T
postForObject
(String url, Object request, Class<T> responseType, Object... urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.<T> T
Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.<T> T
postForObject
(URI url, Object request, Class<T> responseType) Create a new resource by POSTing the given object to the URL, and returns the representation found in the response.void
Create or update a resource by PUTting the given object to the URI.void
Creates a new resource by PUTting the given object to URI template.void
Creates a new resource by PUTting the given object to URL.void
setUriTemplateHandler
(UriTemplateHandler handler) Configure theUriTemplateHandler
to use to expand URI templates.withBasicAuth
(String username, String password) Creates a newTestRestTemplate
with the same configuration as this one, except that it will send basic authorization headers using the givenusername
andpassword
.withRequestFactorySettings
(UnaryOperator<ClientHttpRequestFactorySettings> requestFactorySettingsCustomizer) Creates a newTestRestTemplate
with the same configuration as this one, except that it will customize theClientHttpRequestFactorySettings
.withRequestFactorySettings
(ClientHttpRequestFactorySettings requestFactorySettings) Creates a newTestRestTemplate
with the same configuration as this one, except that it will apply the givenClientHttpRequestFactorySettings
.
-
Constructor Details
-
TestRestTemplate
Create a newTestRestTemplate
instance.- Parameters:
restTemplateBuilder
- builder used to configure underlyingRestTemplate
- Since:
- 1.4.1
-
TestRestTemplate
Create a newTestRestTemplate
instance.- Parameters:
httpClientOptions
- client options to use if the Apache HTTP Client is used
-
TestRestTemplate
public TestRestTemplate(String username, String password, TestRestTemplate.HttpClientOption... httpClientOptions) Create a newTestRestTemplate
instance with the specified credentials.- Parameters:
username
- the username to use (ornull
)password
- the password (ornull
)httpClientOptions
- client options to use if the Apache HTTP Client is used
-
TestRestTemplate
public TestRestTemplate(RestTemplateBuilder builder, String username, String password, TestRestTemplate.HttpClientOption... httpClientOptions) Create a newTestRestTemplate
instance with the specified credentials.- Parameters:
builder
- builder used to configure underlyingRestTemplate
username
- the username to use (ornull
)password
- the password (ornull
)httpClientOptions
- client options to use if the Apache HTTP Client is used- Since:
- 2.0.0
-
-
Method Details
-
setUriTemplateHandler
Configure theUriTemplateHandler
to use to expand URI templates. By default theDefaultUriBuilderFactory
is used which relies on Spring's URI template support and exposes several useful properties that customize its behavior for encoding and for prepending a common base URL. An alternative implementation may be used to plug an external URI template library.- Parameters:
handler
- the URI template handler to use
-
getRootUri
Returns the root URI applied byRestTemplateBuilder.rootUri(String)
or""
if the root URI has not been applied.- Returns:
- the root URI
-
getForObject
Retrieve a representation by doing a GET on the specified URL. The response (if any) is converted and returned.URI Template variables are expanded using the given URI variables, if any.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLresponseType
- the type of the return valueurlVariables
- the variables to expand the template- Returns:
- the converted object
- See Also:
-
getForObject
Retrieve a representation by doing a GET on the URI template. The response (if any) is converted and returned.URI Template variables are expanded using the given map.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLresponseType
- the type of the return valueurlVariables
- the map containing variables for the URI template- Returns:
- the converted object
- See Also:
-
getForObject
Retrieve a representation by doing a GET on the URL . The response (if any) is converted and returned.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLresponseType
- the type of the return value- Returns:
- the converted object
- See Also:
-
getForEntity
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... urlVariables) Retrieve an entity by doing a GET on the specified URL. The response is converted and stored in anResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLresponseType
- the type of the return valueurlVariables
- the variables to expand the template- Returns:
- the entity
- See Also:
-
getForEntity
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> urlVariables) Retrieve a representation by doing a GET on the URI template. The response is converted and stored in anResponseEntity
.URI Template variables are expanded using the given map.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLresponseType
- the type of the return valueurlVariables
- the map containing variables for the URI template- Returns:
- the converted object
- See Also:
-
getForEntity
Retrieve a representation by doing a GET on the URL . The response is converted and stored in anResponseEntity
.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLresponseType
- the type of the return value- Returns:
- the converted object
- See Also:
-
headForHeaders
Retrieve all headers of the resource specified by the URI template.URI Template variables are expanded using the given URI variables, if any.
- Parameters:
url
- the URLurlVariables
- the variables to expand the template- Returns:
- all HTTP headers of that resource
- See Also:
-
headForHeaders
Retrieve all headers of the resource specified by the URI template.URI Template variables are expanded using the given map.
- Parameters:
url
- the URLurlVariables
- the map containing variables for the URI template- Returns:
- all HTTP headers of that resource
- See Also:
-
headForHeaders
Retrieve all headers of the resource specified by the URL.- Parameters:
url
- the URL- Returns:
- all HTTP headers of that resource
- See Also:
-
postForLocation
Create a new resource by POSTing the given object to the URI template, and returns the value of theLocation
header. This header typically indicates where the new resource is stored.URI Template variables are expanded using the given URI variables, if any.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
urlVariables
- the variables to expand the template- Returns:
- the value for the
Location
header - See Also:
-
postForLocation
Create a new resource by POSTing the given object to the URI template, and returns the value of theLocation
header. This header typically indicates where the new resource is stored.URI Template variables are expanded using the given map.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
urlVariables
- the variables to expand the template- Returns:
- the value for the
Location
header - See Also:
-
postForLocation
Create a new resource by POSTing the given object to the URL, and returns the value of theLocation
header. This header typically indicates where the new resource is stored.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
- Returns:
- the value for the
Location
header - See Also:
-
postForObject
public <T> T postForObject(String url, Object request, Class<T> responseType, Object... urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.URI Template variables are expanded using the given URI variables, if any.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the type of the return valueurlVariables
- the variables to expand the template- Returns:
- the converted object
- See Also:
-
postForObject
public <T> T postForObject(String url, Object request, Class<T> responseType, Map<String, ?> urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.URI Template variables are expanded using the given map.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the type of the return valueurlVariables
- the variables to expand the template- Returns:
- the converted object
- See Also:
-
postForObject
Create a new resource by POSTing the given object to the URL, and returns the representation found in the response.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the type of the return value- Returns:
- the converted object
- See Also:
-
postForEntity
public <T> ResponseEntity<T> postForEntity(String url, Object request, Class<T> responseType, Object... urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the response asResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the response type to returnurlVariables
- the variables to expand the template- Returns:
- the converted object
- See Also:
-
postForEntity
public <T> ResponseEntity<T> postForEntity(String url, Object request, Class<T> responseType, Map<String, ?> urlVariables) Create a new resource by POSTing the given object to the URI template, and returns the response asHttpEntity
.URI Template variables are expanded using the given map.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the response type to returnurlVariables
- the variables to expand the template- Returns:
- the converted object
- See Also:
-
postForEntity
Create a new resource by POSTing the given object to the URL, and returns the response asResponseEntity
.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the response type to return- Returns:
- the converted object
- See Also:
-
put
Create or update a resource by PUTting the given object to the URI.URI Template variables are expanded using the given URI variables, if any.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.If you need to assert the request result consider using the
exchange
method.- Parameters:
url
- the URLrequest
- the Object to be PUT, may benull
urlVariables
- the variables to expand the template- See Also:
-
put
Creates a new resource by PUTting the given object to URI template.URI Template variables are expanded using the given map.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.If you need to assert the request result consider using the
exchange
method.- Parameters:
url
- the URLrequest
- the Object to be PUT, may benull
urlVariables
- the variables to expand the template- See Also:
-
put
Creates a new resource by PUTting the given object to URL.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.If you need to assert the request result consider using the
exchange
method.- Parameters:
url
- the URLrequest
- the Object to be PUT, may benull
- See Also:
-
patchForObject
public <T> T patchForObject(String url, Object request, Class<T> responseType, Object... uriVariables) Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.URI Template variables are expanded using the given URI variables, if any.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be PATCHed, may benull
responseType
- the type of the return valueuriVariables
- the variables to expand the template- Returns:
- the converted object
- Since:
- 1.4.4
- See Also:
-
patchForObject
public <T> T patchForObject(String url, Object request, Class<T> responseType, Map<String, ?> uriVariables) Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.URI Template variables are expanded using the given map.
The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be PATCHed, may benull
responseType
- the type of the return valueuriVariables
- the variables to expand the template- Returns:
- the converted object
- Since:
- 1.4.4
- See Also:
-
patchForObject
Update a resource by PATCHing the given object to the URL, and returns the representation found in the response.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLrequest
- the Object to be POSTed, may benull
responseType
- the type of the return value- Returns:
- the converted object
- Since:
- 1.4.4
- See Also:
-
delete
Delete the resources at the specified URI.URI Template variables are expanded using the given URI variables, if any.
If you need to assert the request result consider using the
exchange
method.- Parameters:
url
- the URLurlVariables
- the variables to expand in the template- See Also:
-
delete
Delete the resources at the specified URI.URI Template variables are expanded using the given map.
If you need to assert the request result consider using the
exchange
method.- Parameters:
url
- the URLurlVariables
- the variables to expand the template- See Also:
-
delete
Delete the resources at the specified URL.If you need to assert the request result consider using the
exchange
method.- Parameters:
url
- the URL- See Also:
-
optionsForAllow
Return the value of theAllow
header for the given URI.URI Template variables are expanded using the given URI variables, if any.
- Parameters:
url
- the URLurlVariables
- the variables to expand in the template- Returns:
- the value of the
Allow
header - See Also:
-
optionsForAllow
Return the value of theAllow
header for the given URI.URI Template variables are expanded using the given map.
- Parameters:
url
- the URLurlVariables
- the variables to expand in the template- Returns:
- the value of the
Allow
header - See Also:
-
optionsForAllow
Return the value of theAllow
header for the given URL.- Parameters:
url
- the URL- Returns:
- the value of the
Allow
header - See Also:
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestEntity
- the entity (headers and/or body) to write to the request, may benull
responseType
- the type of the return valueurlVariables
- the variables to expand in the template- Returns:
- the response as entity
- See Also:
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestEntity
- the entity (headers and/or body) to write to the request, may benull
responseType
- the type of the return valueurlVariables
- the variables to expand in the template- Returns:
- the response as entity
- See Also:
-
exchange
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestEntity
- the entity (headers and/or body) to write to the request, may benull
responseType
- the type of the return value- Returns:
- the response as entity
- See Also:
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
. The givenParameterizedTypeReference
is used to pass generic type information:ParameterizedTypeReference<List<MyBean>> myBean = new ParameterizedTypeReference<List<MyBean>>() {}; ResponseEntity<List<MyBean>> response = template.exchange("https://example.com",HttpMethod.GET, null, myBean);
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestEntity
- the entity (headers and/or body) to write to the request, may benull
responseType
- the type of the return valueurlVariables
- the variables to expand in the template- Returns:
- the response as entity
- See Also:
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> urlVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
. The givenParameterizedTypeReference
is used to pass generic type information:ParameterizedTypeReference<List<MyBean>> myBean = new ParameterizedTypeReference<List<MyBean>>() {}; ResponseEntity<List<MyBean>> response = template.exchange("https://example.com",HttpMethod.GET, null, myBean);
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestEntity
- the entity (headers and/or body) to write to the request, may benull
responseType
- the type of the return valueurlVariables
- the variables to expand in the template- Returns:
- the response as entity
- See Also:
-
exchange
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity
. The givenParameterizedTypeReference
is used to pass generic type information:ParameterizedTypeReference<List<MyBean>> myBean = new ParameterizedTypeReference<List<MyBean>>() {}; ResponseEntity<List<MyBean>> response = template.exchange("https://example.com",HttpMethod.GET, null, myBean);
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestEntity
- the entity (headers and/or body) to write to the request, may benull
responseType
- the type of the return value- Returns:
- the response as entity
- See Also:
-
exchange
Execute the request specified in the givenRequestEntity
and return the response asResponseEntity
. Typically used in combination with the static builder methods onRequestEntity
, for instance:MyRequest body = ... RequestEntity request = RequestEntity.post(new URI("https://example.com/foo")).accept(MediaType.APPLICATION_JSON).body(body); ResponseEntity<MyResponse> response = template.exchange(request, MyResponse.class);
- Type Parameters:
T
- the type of the return value- Parameters:
requestEntity
- the entity to write to the requestresponseType
- the type of the return value- Returns:
- the response as entity
- See Also:
-
exchange
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) Execute the request specified in the givenRequestEntity
and return the response asResponseEntity
. The givenParameterizedTypeReference
is used to pass generic type information:MyRequest body = ... RequestEntity request = RequestEntity.post(new URI("https://example.com/foo")).accept(MediaType.APPLICATION_JSON).body(body); ParameterizedTypeReference<List<MyResponse>> myBean = new ParameterizedTypeReference<List<MyResponse>>() {}; ResponseEntity<List<MyResponse>> response = template.exchange(request, myBean);
- Type Parameters:
T
- the type of the return value- Parameters:
requestEntity
- the entity to write to the requestresponseType
- the type of the return value- Returns:
- the response as entity
- See Also:
-
execute
public <T> T execute(String url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Object... urlVariables) Execute the HTTP method to the given URI template, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.URI Template variables are expanded using the given URI variables, if any.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestCallback
- object that prepares the requestresponseExtractor
- object that extracts the return value from the responseurlVariables
- the variables to expand in the template- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- See Also:
-
execute
public <T> T execute(String url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Map<String, ?> urlVariables) Execute the HTTP method to the given URI template, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.URI Template variables are expanded using the given URI variables map.
- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestCallback
- object that prepares the requestresponseExtractor
- object that extracts the return value from the responseurlVariables
- the variables to expand in the template- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- See Also:
-
execute
public <T> T execute(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor) Execute the HTTP method to the given URL, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.- Type Parameters:
T
- the type of the return value- Parameters:
url
- the URLmethod
- the HTTP method (GET, POST, etc.)requestCallback
- object that prepares the requestresponseExtractor
- object that extracts the return value from the response- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- See Also:
-
getRestTemplate
Returns the underlyingRestTemplate
that is actually used to perform the REST operations.- Returns:
- the restTemplate
-
withBasicAuth
Creates a newTestRestTemplate
with the same configuration as this one, except that it will send basic authorization headers using the givenusername
andpassword
. The request factory used is a new instance of the underlyingRestTemplate
's request factory type (when possible).- Parameters:
username
- the usernamepassword
- the password- Returns:
- the new template
- Since:
- 1.4.1
-
withRequestFactorySettings
public TestRestTemplate withRequestFactorySettings(ClientHttpRequestFactorySettings requestFactorySettings) Creates a newTestRestTemplate
with the same configuration as this one, except that it will apply the givenClientHttpRequestFactorySettings
. The request factory used is a new instance of the underlyingRestTemplate
's request factory type (when possible).- Parameters:
requestFactorySettings
- the new request factory settings- Returns:
- the new template
- Since:
- 3.4.1
-
withRequestFactorySettings
public TestRestTemplate withRequestFactorySettings(UnaryOperator<ClientHttpRequestFactorySettings> requestFactorySettingsCustomizer) Creates a newTestRestTemplate
with the same configuration as this one, except that it will customize theClientHttpRequestFactorySettings
. The request factory used is a new instance of the underlyingRestTemplate
's request factory type (when possible).- Parameters:
requestFactorySettingsCustomizer
- aUnaryOperator
to update the settings- Returns:
- the new template
- Since:
- 3.4.1
-