Class RestTemplate
- All Implemented Interfaces:
RestOperations
HttpURLConnection
, Apache HttpComponents, and others. RestTemplate
offers templates for common scenarios by HTTP method, in addition to the
generalized exchange
and execute
methods that support
less frequent cases.
RestTemplate is typically used as a shared component. However, its
configuration does not support concurrent modification, and as such its
configuration is typically prepared on startup. If necessary, you can create
multiple, differently configured RestTemplate instances on startup. Such
instances may use the same underlying ClientHttpRequestFactory
if they need to share HTTP client resources.
NOTE: As of 5.0 this class is in maintenance mode, with
only minor requests for changes and bugs to be accepted going forward. Please,
consider using the org.springframework.web.reactive.client.WebClient
which has a more modern API and supports sync, async, and streaming scenarios.
- Since:
- 3.0
- Author:
- Arjen Poutsma, Brian Clozel, Roy Clarkson, Juergen Hoeller, Sam Brannen, Sebastien Deleuze
- See Also:
-
Field Summary
Fields inherited from class org.springframework.http.client.support.HttpAccessor
logger
-
Constructor Summary
ConstructorDescriptionCreate a new instance of theRestTemplate
using default settings.RestTemplate
(List<HttpMessageConverter<?>> messageConverters) Create a new instance of theRestTemplate
using the given list ofHttpMessageConverter
to use.RestTemplate
(ClientHttpRequestFactory requestFactory) Create a new instance of theRestTemplate
based on the givenClientHttpRequestFactory
. -
Method Summary
Modifier and TypeMethodDescription<T> RequestCallback
acceptHeaderRequestCallback
(Class<T> responseType) Return aRequestCallback
that sets the requestAccept
header based on the given response type, cross-checked against the configured message converters.void
Delete the resources at the specified URI.void
Delete the resources at the specified URI.void
Delete the resources at the specified URL.protected <T> T
doExecute
(URI url, String uriTemplate, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor) Execute the given method on the provided URI.protected <T> T
doExecute
(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor) Deprecated.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and return the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and return the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and return the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(String url, HttpMethod method, HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) Execute the HTTP method to the given URI template, writing the given request entity to the request, and return 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 return 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 return the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(RequestEntity<?> entity, Class<T> responseType) Execute the request specified in the givenRequestEntity
and return the response asResponseEntity
.<T> ResponseEntity<T>
exchange
(RequestEntity<?> entity, ParameterizedTypeReference<T> responseType) Execute the request specified in the givenRequestEntity
and return the response asResponseEntity
.<T> T
execute
(String uriTemplate, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Object... uriVariables) Execute the HTTP method to the given URI template, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.<T> T
execute
(String uriTemplate, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) 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
.Return the error handler.<T> ResponseEntity<T>
getForEntity
(String url, Class<T> responseType, Object... uriVariables) Retrieve an entity by doing a GET on the specified URL.<T> ResponseEntity<T>
getForEntity
(String url, Class<T> responseType, Map<String, ?> uriVariables) 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... uriVariables) Retrieve a representation by doing a GET on the specified URL.<T> T
getForObject
(String url, Class<T> responseType, Map<String, ?> uriVariables) 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.Return the list of message body converters.Return the configured URI template handler.protected void
handleResponse
(URI url, HttpMethod method, ClientHttpResponse response) Handle the given response, performing appropriate logging and invoking theResponseErrorHandler
if necessary.protected ResponseExtractor<HttpHeaders>
Return a response extractor forHttpHeaders
.headForHeaders
(String url, Object... uriVariables) Retrieve all headers of the resource specified by the URI template.headForHeaders
(String url, Map<String, ?> uriVariables) Retrieve all headers of the resource specified by the URI template.headForHeaders
(URI url) Retrieve all headers of the resource specified by the URL.<T> RequestCallback
httpEntityCallback
(Object requestBody) Return aRequestCallback
implementation that writes the given object to the request stream.<T> RequestCallback
httpEntityCallback
(Object requestBody, Type responseType) Return aRequestCallback
implementation that: Sets the requestAccept
header based on the given response type, cross-checked against the configured message converters.optionsForAllow
(String url, Object... uriVariables) Return the value of theAllow
header for the given URI.optionsForAllow
(String url, Map<String, ?> uriVariables) 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 return the representation found in the response.<T> T
Update a resource by PATCHing the given object to the URI template, and return 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 return the representation found in the response.<T> ResponseEntity<T>
postForEntity
(String url, Object request, Class<T> responseType, Object... uriVariables) Create a new resource by POSTing the given object to the URI template, and return the response asResponseEntity
.<T> ResponseEntity<T>
Create a new resource by POSTing the given object to the URI template, and return 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 return the response asResponseEntity
.postForLocation
(String url, Object request, Object... uriVariables) Create a new resource by POSTing the given object to the URI template, and return the value of theLocation
header.postForLocation
(String url, Object request, Map<String, ?> uriVariables) Create a new resource by POSTing the given object to the URI template, and return the value of theLocation
header.postForLocation
(URI url, Object request) Create a new resource by POSTing the given object to the URL, and return the value of theLocation
header.<T> T
postForObject
(String url, Object request, Class<T> responseType, Object... uriVariables) Create a new resource by POSTing the given object to the URI template, and return the representation found in the response.<T> T
Create a new resource by POSTing the given object to the URI template, and return 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 return 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.<T> ResponseExtractor<ResponseEntity<T>>
responseEntityExtractor
(Type responseType) Return aResponseExtractor
that prepares aResponseEntity
.void
setDefaultUriVariables
(Map<String, ?> uriVars) Configure default URI variable values.void
setErrorHandler
(ResponseErrorHandler errorHandler) Set the error handler.void
setMessageConverters
(List<HttpMessageConverter<?>> messageConverters) Set the message body converters to use.void
setObservationConvention
(ClientRequestObservationConvention observationConvention) Configure anObservationConvention
that sets the name of theobservation
as well as itsKeyValues
extracted from theClientRequestObservationContext
.void
setObservationRegistry
(io.micrometer.observation.ObservationRegistry observationRegistry) Configure anObservationRegistry
for collecting spans and metrics for request execution.void
setUriTemplateHandler
(UriTemplateHandler handler) Configure a strategy for expanding URI templates.Methods inherited from class org.springframework.http.client.support.InterceptingHttpAccessor
getInterceptors, getRequestFactory, setInterceptors, setRequestFactory
Methods inherited from class org.springframework.http.client.support.HttpAccessor
createRequest, getClientHttpRequestInitializers, setClientHttpRequestInitializers
-
Constructor Details
-
RestTemplate
public RestTemplate()Create a new instance of theRestTemplate
using default settings. DefaultHttpMessageConverters
are initialized. -
RestTemplate
Create a new instance of theRestTemplate
based on the givenClientHttpRequestFactory
.- Parameters:
requestFactory
- the HTTP request factory to use- See Also:
-
RestTemplate
Create a new instance of theRestTemplate
using the given list ofHttpMessageConverter
to use.- Parameters:
messageConverters
- the list ofHttpMessageConverter
to use- Since:
- 3.2.7
-
-
Method Details
-
setMessageConverters
Set the message body converters to use.These converters are used to convert from and to HTTP requests and responses.
-
getMessageConverters
Return the list of message body converters.The returned
List
is active and may get appended to. -
setErrorHandler
Set the error handler.By default, RestTemplate uses a
DefaultResponseErrorHandler
. -
getErrorHandler
Return the error handler. -
setDefaultUriVariables
Configure default URI variable values. This is a shortcut for:DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory(); handler.setDefaultUriVariables(...); RestTemplate restTemplate = new RestTemplate(); restTemplate.setUriTemplateHandler(handler);
- Parameters:
uriVars
- the default URI variable values- Since:
- 4.3
-
setUriTemplateHandler
Configure a strategy for expanding URI templates.By default,
DefaultUriBuilderFactory
is used and for backwards compatibility, the encoding mode is set toURI_COMPONENT
. As of 5.0.8, prefer usingTEMPLATE_AND_VALUES
.- Parameters:
handler
- the URI template handler to use
-
getUriTemplateHandler
Return the configured URI template handler. -
setObservationRegistry
public void setObservationRegistry(io.micrometer.observation.ObservationRegistry observationRegistry) Configure anObservationRegistry
for collecting spans and metrics for request execution. By default,observations
are no-ops.- Parameters:
observationRegistry
- the observation registry to use- Since:
- 6.0
-
setObservationConvention
Configure anObservationConvention
that sets the name of theobservation
as well as itsKeyValues
extracted from theClientRequestObservationContext
. If none set, thedefault convention
will be used.- Parameters:
observationConvention
- the observation convention to use- Since:
- 6.0
- See Also:
-
getForObject
@Nullable public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
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.
- Specified by:
getForObject
in interfaceRestOperations
- Parameters:
url
- the URLresponseType
- the type of the return valueuriVariables
- the variables to expand the template- Returns:
- the converted object
- Throws:
RestClientException
-
getForObject
@Nullable public <T> T getForObject(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
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.
- Specified by:
getForObject
in interfaceRestOperations
- Parameters:
url
- the URLresponseType
- the type of the return valueuriVariables
- the map containing variables for the URI template- Returns:
- the converted object
- Throws:
RestClientException
-
getForObject
Description copied from interface:RestOperations
Retrieve a representation by doing a GET on the URL. The response (if any) is converted and returned.- Specified by:
getForObject
in interfaceRestOperations
- Parameters:
url
- the URLresponseType
- the type of the return value- Returns:
- the converted object
- Throws:
RestClientException
-
getForEntity
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Retrieve an entity by doing a GET on the specified URL. The response is converted and stored in aResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
getForEntity
in interfaceRestOperations
- Parameters:
url
- the URLresponseType
- the type of the return valueuriVariables
- the variables to expand the template- Returns:
- the entity
- Throws:
RestClientException
-
getForEntity
public <T> ResponseEntity<T> getForEntity(String url, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Retrieve a representation by doing a GET on the URI template. The response is converted and stored in aResponseEntity
.URI Template variables are expanded using the given map.
- Specified by:
getForEntity
in interfaceRestOperations
- Parameters:
url
- the URLresponseType
- the type of the return valueuriVariables
- the map containing variables for the URI template- Returns:
- the converted object
- Throws:
RestClientException
-
getForEntity
public <T> ResponseEntity<T> getForEntity(URI url, Class<T> responseType) throws RestClientException Description copied from interface:RestOperations
Retrieve a representation by doing a GET on the URL. The response is converted and stored in aResponseEntity
.- Specified by:
getForEntity
in interfaceRestOperations
- Parameters:
url
- the URLresponseType
- the type of the return value- Returns:
- the converted object
- Throws:
RestClientException
-
headForHeaders
Description copied from interface:RestOperations
Retrieve all headers of the resource specified by the URI template.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
headForHeaders
in interfaceRestOperations
- Parameters:
url
- the URLuriVariables
- the variables to expand the template- Returns:
- all HTTP headers of that resource
- Throws:
RestClientException
-
headForHeaders
public HttpHeaders headForHeaders(String url, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Retrieve all headers of the resource specified by the URI template.URI Template variables are expanded using the given map.
- Specified by:
headForHeaders
in interfaceRestOperations
- Parameters:
url
- the URLuriVariables
- the map containing variables for the URI template- Returns:
- all HTTP headers of that resource
- Throws:
RestClientException
-
headForHeaders
Description copied from interface:RestOperations
Retrieve all headers of the resource specified by the URL.- Specified by:
headForHeaders
in interfaceRestOperations
- Parameters:
url
- the URL- Returns:
- all HTTP headers of that resource
- Throws:
RestClientException
-
postForLocation
@Nullable public URI postForLocation(String url, @Nullable Object request, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Create a new resource by POSTing the given object to the URI template, and return 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.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForLocation
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)uriVariables
- the variables to expand the template- Returns:
- the value for the
Location
header - Throws:
RestClientException
- See Also:
-
postForLocation
@Nullable public URI postForLocation(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Create a new resource by POSTing the given object to the URI template, and return 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 requestThe body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForLocation
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)uriVariables
- the variables to expand the template- Returns:
- the value for the
Location
header - Throws:
RestClientException
- See Also:
-
postForLocation
Description copied from interface:RestOperations
Create a new resource by POSTing the given object to the URL, and return 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.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForLocation
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)- Returns:
- the value for the
Location
header - Throws:
RestClientException
- See Also:
-
postForObject
@Nullable public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Create a new resource by POSTing the given object to the URI template, and return 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.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForObject
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)responseType
- the type of the return valueuriVariables
- the variables to expand the template- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
postForObject
@Nullable public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Create a new resource by POSTing the given object to the URI template, and return 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.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForObject
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)responseType
- the type of the return valueuriVariables
- the variables to expand the template- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
postForObject
@Nullable public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException Description copied from interface:RestOperations
Create a new resource by POSTing the given object to the URL, and return the representation found in the response.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForObject
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)responseType
- the type of the return value- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
postForEntity
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Create a new resource by POSTing the given object to the URI template, and return 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.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForEntity
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)uriVariables
- the variables to expand the template- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
postForEntity
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Create a new resource by POSTing the given object to the URI template, and return 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.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForEntity
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)uriVariables
- the variables to expand the template- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
postForEntity
public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException Description copied from interface:RestOperations
Create a new resource by POSTing the given object to the URL, and return the response asResponseEntity
.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.The body of the entity, or
request
itself, can be aMultiValueMap
to create a multipart request. The values in theMultiValueMap
can be any Object representing the body of the part, or anHttpEntity
representing a part with body and headers.- Specified by:
postForEntity
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be POSTed (may benull
)- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
put
public void put(String url, @Nullable Object request, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
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.- Specified by:
put
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be PUT (may benull
)uriVariables
- the variables to expand the template- Throws:
RestClientException
- See Also:
-
put
public void put(String url, @Nullable Object request, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
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.- Specified by:
put
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be PUT (may benull
)uriVariables
- the variables to expand the template- Throws:
RestClientException
- See Also:
-
put
Description copied from interface:RestOperations
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.- Specified by:
put
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the Object to be PUT (may benull
)- Throws:
RestClientException
- See Also:
-
patchForObject
@Nullable public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Update a resource by PATCHing the given object to the URI template, and return 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.NOTE: The standard JDK HTTP library does not support HTTP PATCH. You need to use e.g. the Apache HttpComponents request factory.
- Specified by:
patchForObject
in interfaceRestOperations
- 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
- Throws:
RestClientException
- See Also:
-
patchForObject
@Nullable public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Update a resource by PATCHing the given object to the URI template, and return 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.NOTE: The standard JDK HTTP library does not support HTTP PATCH. You need to use e.g. the Apache HttpComponents request factory.
- Specified by:
patchForObject
in interfaceRestOperations
- 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
- Throws:
RestClientException
- See Also:
-
patchForObject
@Nullable public <T> T patchForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException Description copied from interface:RestOperations
Update a resource by PATCHing the given object to the URL, and return the representation found in the response.The
request
parameter can be aHttpEntity
in order to add additional HTTP headers to the request.NOTE: The standard JDK HTTP library does not support HTTP PATCH. You need to use e.g. the Apache HttpComponents request factory.
- Specified by:
patchForObject
in interfaceRestOperations
- Parameters:
url
- the URLrequest
- the object to be PATCHed (may benull
)responseType
- the type of the return value- Returns:
- the converted object
- Throws:
RestClientException
- See Also:
-
delete
Description copied from interface:RestOperations
Delete the resources at the specified URI.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
delete
in interfaceRestOperations
- Parameters:
url
- the URLuriVariables
- the variables to expand in the template- Throws:
RestClientException
-
delete
Description copied from interface:RestOperations
Delete the resources at the specified URI.URI Template variables are expanded using the given map.
- Specified by:
delete
in interfaceRestOperations
- Parameters:
url
- the URLuriVariables
- the variables to expand the template- Throws:
RestClientException
-
delete
Description copied from interface:RestOperations
Delete the resources at the specified URL.- Specified by:
delete
in interfaceRestOperations
- Parameters:
url
- the URL- Throws:
RestClientException
-
optionsForAllow
public Set<HttpMethod> optionsForAllow(String url, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Return the value of theAllow
header for the given URI.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
optionsForAllow
in interfaceRestOperations
- Parameters:
url
- the URLuriVariables
- the variables to expand in the template- Returns:
- the value of the
Allow
header - Throws:
RestClientException
-
optionsForAllow
public Set<HttpMethod> optionsForAllow(String url, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Return the value of theAllow
header for the given URI.URI Template variables are expanded using the given map.
- Specified by:
optionsForAllow
in interfaceRestOperations
- Parameters:
url
- the URLuriVariables
- the variables to expand in the template- Returns:
- the value of the
Allow
header - Throws:
RestClientException
-
optionsForAllow
Description copied from interface:RestOperations
Return the value of theAllow
header for the given URL.- Specified by:
optionsForAllow
in interfaceRestOperations
- Parameters:
url
- the URL- Returns:
- the value of the
Allow
header - Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Execute the HTTP method to the given URI template, writing the given request entity to the request, and return the response asResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
exchange
in interfaceRestOperations
- 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 to convert the response to, orVoid.class
for no bodyuriVariables
- the variables to expand in the template- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Execute the HTTP method to the given URI template, writing the given request entity to the request, and return the response asResponseEntity
.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
exchange
in interfaceRestOperations
- 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 to convert the response to, orVoid.class
for no bodyuriVariables
- the variables to expand in the template- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, Class<T> responseType) throws RestClientException Description copied from interface:RestOperations
Execute the HTTP method to the given URI template, writing the given request entity to the request, and return the response asResponseEntity
.- Specified by:
exchange
in interfaceRestOperations
- 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 to convert the response to, orVoid.class
for no body- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Object... uriVariables) throws RestClientException Description copied from interface:RestOperations
Execute the HTTP method to the given URI template, writing the given request entity to the request, and return 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);
- Specified by:
exchange
in interfaceRestOperations
- 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 to convert the response to, orVoid.class
for no bodyuriVariables
- the variables to expand in the template- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(String url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType, Map<String, ?> uriVariables) throws RestClientExceptionDescription copied from interface:RestOperations
Execute the HTTP method to the given URI template, writing the given request entity to the request, and return 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);
- Specified by:
exchange
in interfaceRestOperations
- 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 to convert the response to, orVoid.class
for no bodyuriVariables
- the variables to expand in the template- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) throws RestClientException Description copied from interface:RestOperations
Execute the HTTP method to the given URI template, writing the given request entity to the request, and return 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);
- Specified by:
exchange
in interfaceRestOperations
- 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 to convert the response to, orVoid.class
for no body- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(RequestEntity<?> entity, Class<T> responseType) throws RestClientException Description copied from interface:RestOperations
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(URI.create("https://example.com/foo")) .accept(MediaType.APPLICATION_JSON) .body(body); ResponseEntity<MyResponse> response = template.exchange(request, MyResponse.class);
- Specified by:
exchange
in interfaceRestOperations
- Parameters:
entity
- the entity to write to the requestresponseType
- the type to convert the response to, orVoid.class
for no body- Returns:
- the response as entity
- Throws:
RestClientException
-
exchange
public <T> ResponseEntity<T> exchange(RequestEntity<?> entity, ParameterizedTypeReference<T> responseType) throws RestClientException Description copied from interface:RestOperations
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(URI.create("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);
- Specified by:
exchange
in interfaceRestOperations
- Parameters:
entity
- the entity to write to the requestresponseType
- the type to convert the response to, orVoid.class
for no body- Returns:
- the response as entity
- Throws:
RestClientException
-
execute
@Nullable public <T> T execute(String uriTemplate, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Object... uriVariables) throws RestClientException 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.
To provide a
RequestCallback
orResponseExtractor
only, but not both, consider using:- Specified by:
execute
in interfaceRestOperations
- Parameters:
uriTemplate
- the URI templatemethod
- the HTTP method (GET, POST, etc)requestCallback
- object that prepares the requestresponseExtractor
- object that extracts the return value from the responseuriVariables
- the variables to expand in the template- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- Throws:
RestClientException
-
execute
@Nullable public <T> T execute(String uriTemplate, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Map<String, ?> uriVariables) throws RestClientExceptionExecute 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.
To provide a
RequestCallback
orResponseExtractor
only, but not both, consider using:- Specified by:
execute
in interfaceRestOperations
- Parameters:
uriTemplate
- the URI templatemethod
- the HTTP method (GET, POST, etc)requestCallback
- object that prepares the requestresponseExtractor
- object that extracts the return value from the responseuriVariables
- the variables to expand in the template- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- Throws:
RestClientException
-
execute
@Nullable public <T> T execute(URI url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException Execute the HTTP method to the given URL, preparing the request with theRequestCallback
, and reading the response with aResponseExtractor
.To provide a
RequestCallback
orResponseExtractor
only, but not both, consider using:- Specified by:
execute
in interfaceRestOperations
- 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
- Throws:
RestClientException
-
doExecute
@Nullable @Deprecated protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException Deprecated.Execute the given method on the provided URI.The
ClientHttpRequest
is processed using theRequestCallback
; the response with theResponseExtractor
.- Parameters:
url
- the fully-expanded URL to connect tomethod
- the HTTP method to execute (GET, POST, etc.)requestCallback
- object that prepares the request (can benull
)responseExtractor
- object that extracts the return value from the response (can benull
)- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- Throws:
RestClientException
-
doExecute
@Nullable protected <T> T doExecute(URI url, @Nullable String uriTemplate, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException Execute the given method on the provided URI.The
ClientHttpRequest
is processed using theRequestCallback
; the response with theResponseExtractor
.- Parameters:
url
- the fully-expanded URL to connect touriTemplate
- the URI template that was used for creating the expanded URLmethod
- the HTTP method to execute (GET, POST, etc.)requestCallback
- object that prepares the request (can benull
)responseExtractor
- object that extracts the return value from the response (can benull
)- Returns:
- an arbitrary object, as returned by the
ResponseExtractor
- Throws:
RestClientException
- Since:
- 6.0
-
handleResponse
protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException Handle the given response, performing appropriate logging and invoking theResponseErrorHandler
if necessary.Can be overridden in subclasses.
- Parameters:
url
- the fully-expanded URL to connect tomethod
- the HTTP method to execute (GET, POST, etc.)response
- the resultingClientHttpResponse
- Throws:
IOException
- if propagated fromResponseErrorHandler
- Since:
- 4.1.6
- See Also:
-
acceptHeaderRequestCallback
Return aRequestCallback
that sets the requestAccept
header based on the given response type, cross-checked against the configured message converters. -
httpEntityCallback
Return aRequestCallback
implementation that writes the given object to the request stream. -
httpEntityCallback
Return aRequestCallback
implementation that:- Sets the request
Accept
header based on the given response type, cross-checked against the configured message converters. - Writes the given object to the request stream.
- Sets the request
-
responseEntityExtractor
Return aResponseExtractor
that prepares aResponseEntity
. -
headersExtractor
Return a response extractor forHttpHeaders
.
-
doExecute(URI, String, HttpMethod, RequestCallback, ResponseExtractor)