Class RestTemplate
- java.lang.Object
- org.springframework.http.client.support.HttpAccessor
- org.springframework.http.client.support.InterceptingHttpAccessor
- org.springframework.web.client.RestTemplate
- All Implemented Interfaces:
RestOperations
public class RestTemplate extends InterceptingHttpAccessor implements RestOperations
Synchronous client to perform HTTP requests, exposing a simple, template method API over underlying HTTP client libraries such as the JDKHttpURLConnection, Apache HttpComponents, and others.The RestTemplate offers templates for common scenarios by HTTP method, in addition to the generalized
exchangeandexecutemethods that support of less frequent cases.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.WebClientwhich 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
- See Also:
HttpMessageConverter,RequestCallback,ResponseExtractor,ResponseErrorHandler
Field Summary
Fields inherited from class org.springframework.http.client.support.HttpAccessor
logger
Constructor Summary
Constructors Constructor Description RestTemplate()Create a new instance of theRestTemplateusing default settings.RestTemplate(List<HttpMessageConverter<?>> messageConverters)Create a new instance of theRestTemplateusing the given list ofHttpMessageConverterto use.RestTemplate(ClientHttpRequestFactory requestFactory)Create a new instance of theRestTemplatebased on the givenClientHttpRequestFactory.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> RequestCallbackacceptHeaderRequestCallback(Class<T> responseType)Return aRequestCallbackthat sets the requestAcceptheader based on the given response type, cross-checked against the configured message converters.voiddelete(String url, Object... uriVariables)Delete the resources at the specified URI.voiddelete(String url, Map<String,?> uriVariables)Delete the resources at the specified URI.voiddelete(URI url)Delete the resources at the specified URL.protected <T> TdoExecute(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor)Execute the given method on the provided URI.<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 returns 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 returns 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 returns 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 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 givenRequestEntityand return the response asResponseEntity.<T> ResponseEntity<T>exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType)Execute the request specified in the givenRequestEntityand return the response asResponseEntity.<T> Texecute(String url, 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> Texecute(String url, 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> Texecute(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.ResponseErrorHandlergetErrorHandler()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> TgetForObject(String url, Class<T> responseType, Object... uriVariables)Retrieve a representation by doing a GET on the specified URL.<T> TgetForObject(String url, Class<T> responseType, Map<String,?> uriVariables)Retrieve a representation by doing a GET on the URI template.<T> TgetForObject(URI url, Class<T> responseType)Retrieve a representation by doing a GET on the URL .List<HttpMessageConverter<?>>getMessageConverters()Return the list of message body converters.UriTemplateHandlergetUriTemplateHandler()Return the configured URI template handler.protected voidhandleResponse(URI url, HttpMethod method, ClientHttpResponse response)Handle the given response, performing appropriate logging and invoking theResponseErrorHandlerif necessary.protected ResponseExtractor<HttpHeaders>headersExtractor()Return a response extractor forHttpHeaders.HttpHeadersheadForHeaders(String url, Object... uriVariables)Retrieve all headers of the resource specified by the URI template.HttpHeadersheadForHeaders(String url, Map<String,?> uriVariables)Retrieve all headers of the resource specified by the URI template.HttpHeadersheadForHeaders(URI url)Retrieve all headers of the resource specified by the URL.<T> RequestCallbackhttpEntityCallback(Object requestBody)Return aRequestCallbackimplementation that writes the given object to the request stream.<T> RequestCallbackhttpEntityCallback(Object requestBody, Type responseType)Return aRequestCallbackimplementation that: Sets the requestAcceptheader based on the given response type, cross-checked against the configured message converters.Set<HttpMethod>optionsForAllow(String url, Object... uriVariables)Return the value of the Allow header for the given URI.Set<HttpMethod>optionsForAllow(String url, Map<String,?> uriVariables)Return the value of the Allow header for the given URI.Set<HttpMethod>optionsForAllow(URI url)Return the value of the Allow header for the given URL.<T> TpatchForObject(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> TpatchForObject(String url, Object request, Class<T> responseType, Map<String,?> uriVariables)Update a resource by PATCHing the given object to the URI template, and return the representation found in the response.<T> TpatchForObject(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 returns the response asResponseEntity.<T> ResponseEntity<T>postForEntity(String url, Object request, Class<T> responseType, Map<String,?> uriVariables)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.URIpostForLocation(String url, Object request, Object... uriVariables)Create a new resource by POSTing the given object to the URI template, and returns the value of theLocationheader.URIpostForLocation(String url, Object request, Map<String,?> uriVariables)Create a new resource by POSTing the given object to the URI template, and returns the value of theLocationheader.URIpostForLocation(URI url, Object request)Create a new resource by POSTing the given object to the URL, and returns the value of theLocationheader.<T> TpostForObject(String url, Object request, Class<T> responseType, Object... uriVariables)Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.<T> TpostForObject(String url, Object request, Class<T> responseType, Map<String,?> uriVariables)Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.<T> TpostForObject(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.voidput(String url, Object request, Object... uriVariables)Create or update a resource by PUTting the given object to the URI.voidput(String url, Object request, Map<String,?> uriVariables)Creates a new resource by PUTting the given object to URI template.voidput(URI url, Object request)Creates a new resource by PUTting the given object to URL.<T> ResponseExtractor<ResponseEntity<T>>responseEntityExtractor(Type responseType)Return aResponseExtractorthat prepares aResponseEntity.voidsetDefaultUriVariables(Map<String,?> uriVars)Configure default URI variable values.voidsetErrorHandler(ResponseErrorHandler errorHandler)Set the error handler.voidsetMessageConverters(List<HttpMessageConverter<?>> messageConverters)Set the message body converters to use.voidsetUriTemplateHandler(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 Detail
RestTemplate
public RestTemplate()
Create a new instance of theRestTemplateusing default settings. DefaultHttpMessageConvertersare initialized.
RestTemplate
public RestTemplate(ClientHttpRequestFactory requestFactory)
Create a new instance of theRestTemplatebased on the givenClientHttpRequestFactory.- Parameters:
requestFactory- the HTTP request factory to use- See Also:
SimpleClientHttpRequestFactory,HttpComponentsClientHttpRequestFactory
RestTemplate
public RestTemplate(List<HttpMessageConverter<?>> messageConverters)
Create a new instance of theRestTemplateusing the given list ofHttpMessageConverterto use.- Parameters:
messageConverters- the list ofHttpMessageConverterto use- Since:
- 3.2.7
Method Detail
setMessageConverters
public void setMessageConverters(List<HttpMessageConverter<?>> messageConverters)
Set the message body converters to use.These converters are used to convert from and to HTTP requests and responses.
getMessageConverters
public List<HttpMessageConverter<?>> getMessageConverters()
Return the list of message body converters.The returned
Listis active and may get appended to.
setErrorHandler
public void setErrorHandler(ResponseErrorHandler errorHandler)
Set the error handler.By default, RestTemplate uses a
DefaultResponseErrorHandler.
getErrorHandler
public ResponseErrorHandler getErrorHandler()
Return the error handler.
setDefaultUriVariables
public void setDefaultUriVariables(Map<String,?> uriVars)
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
public void setUriTemplateHandler(UriTemplateHandler handler)
Configure a strategy for expanding URI templates.By default,
DefaultUriBuilderFactoryis used and for backwards compatibility, the encoding mode is set toURI_COMPONENT. As of 5.0.8, prefer usingTEMPLATE_AND_VALUES.Note: in 5.0 the switch from
DefaultUriTemplateHandler(deprecated in 4.3), as the default to use, toDefaultUriBuilderFactorybrings in a different default for theparsePathproperty (switching from false to true).- Parameters:
handler- the URI template handler to use
getUriTemplateHandler
public UriTemplateHandler getUriTemplateHandler()
Return the configured URI template handler.
getForObject
@Nullable public <T> T getForObject(String url, Class<T> responseType, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsRetrieve 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:
getForObjectin 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 RestClientException
Description copied from interface:RestOperationsRetrieve 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:
getForObjectin 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
@Nullable public <T> T getForObject(URI url, Class<T> responseType) throws RestClientException
Description copied from interface:RestOperationsRetrieve a representation by doing a GET on the URL . The response (if any) is converted and returned.- Specified by:
getForObjectin 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:RestOperationsRetrieve 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.
- Specified by:
getForEntityin 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 RestClientException
Description copied from interface:RestOperationsRetrieve 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.
- Specified by:
getForEntityin 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:RestOperationsRetrieve a representation by doing a GET on the URL . The response is converted and stored in anResponseEntity.- Specified by:
getForEntityin interfaceRestOperations- Parameters:
url- the URLresponseType- the type of the return value- Returns:
- the converted object
- Throws:
RestClientException
headForHeaders
public HttpHeaders headForHeaders(String url, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsRetrieve all headers of the resource specified by the URI template.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
headForHeadersin 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 RestClientException
Description copied from interface:RestOperationsRetrieve all headers of the resource specified by the URI template.URI Template variables are expanded using the given map.
- Specified by:
headForHeadersin interfaceRestOperations- Parameters:
url- the URLuriVariables- the map containing variables for the URI template- Returns:
- all HTTP headers of that resource
- Throws:
RestClientException
headForHeaders
public HttpHeaders headForHeaders(URI url) throws RestClientException
Description copied from interface:RestOperationsRetrieve all headers of the resource specified by the URL.- Specified by:
headForHeadersin 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:RestOperationsCreate a new resource by POSTing the given object to the URI template, and returns the value of theLocationheader. This header typically indicates where the new resource is stored.URI Template variables are expanded using the given URI variables, if any.
The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForLocationin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be POSTed (may benull)uriVariables- the variables to expand the template- Returns:
- the value for the
Locationheader - Throws:
RestClientException- See Also:
HttpEntity
postForLocation
@Nullable public URI postForLocation(String url, @Nullable Object request, Map<String,?> uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreate a new resource by POSTing the given object to the URI template, and returns the value of theLocationheader. This header typically indicates where the new resource is stored.URI Template variables are expanded using the given map.
The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the requestThe body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForLocationin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be POSTed (may benull)uriVariables- the variables to expand the template- Returns:
- the value for the
Locationheader - Throws:
RestClientException- See Also:
HttpEntity
postForLocation
@Nullable public URI postForLocation(URI url, @Nullable Object request) throws RestClientException
Description copied from interface:RestOperationsCreate a new resource by POSTing the given object to the URL, and returns the value of theLocationheader. This header typically indicates where the new resource is stored.The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForLocationin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be POSTed (may benull)- Returns:
- the value for the
Locationheader - Throws:
RestClientException- See Also:
HttpEntity
postForObject
@Nullable public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForObjectin 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:
HttpEntity
postForObject
@Nullable public <T> T postForObject(String url, @Nullable Object request, Class<T> responseType, Map<String,?> uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForObjectin 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:
HttpEntity
postForObject
@Nullable public <T> T postForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException
Description copied from interface:RestOperationsCreate a new resource by POSTing the given object to the URL, and returns the representation found in the response.The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForObjectin 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:
HttpEntity
postForEntity
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForEntityin 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:
HttpEntity
postForEntity
public <T> ResponseEntity<T> postForEntity(String url, @Nullable Object request, Class<T> responseType, Map<String,?> uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForEntityin 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:
HttpEntity
postForEntity
public <T> ResponseEntity<T> postForEntity(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException
Description copied from interface:RestOperationsCreate a new resource by POSTing the given object to the URL, and returns the response asResponseEntity.The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.The body of the entity, or
requestitself, can be aMultiValueMapto create a multipart request. The values in theMultiValueMapcan be any Object representing the body of the part, or anHttpEntityrepresenting a part with body and headers.- Specified by:
postForEntityin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be POSTed (may benull)- Returns:
- the converted object
- Throws:
RestClientException- See Also:
HttpEntity
put
public void put(String url, @Nullable Object request, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.- Specified by:
putin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be PUT (may benull)uriVariables- the variables to expand the template- Throws:
RestClientException- See Also:
HttpEntity
put
public void put(String url, @Nullable Object request, Map<String,?> uriVariables) throws RestClientException
Description copied from interface:RestOperationsCreates a new resource by PUTting the given object to URI template.URI Template variables are expanded using the given map.
The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.- Specified by:
putin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be PUT (may benull)uriVariables- the variables to expand the template- Throws:
RestClientException- See Also:
HttpEntity
put
public void put(URI url, @Nullable Object request) throws RestClientException
Description copied from interface:RestOperationsCreates a new resource by PUTting the given object to URL.The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.- Specified by:
putin interfaceRestOperations- Parameters:
url- the URLrequest- the Object to be PUT (may benull)- Throws:
RestClientException- See Also:
HttpEntity
patchForObject
@Nullable public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsUpdate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.NOTE: The standard JDK HTTP library does not support HTTP PATCH. You need to use the Apache HttpComponents or OkHttp request factory.
- Specified by:
patchForObjectin 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:
HttpEntity,InterceptingHttpAccessor.setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory),HttpComponentsAsyncClientHttpRequestFactory,OkHttp3ClientHttpRequestFactory
patchForObject
@Nullable public <T> T patchForObject(String url, @Nullable Object request, Class<T> responseType, Map<String,?> uriVariables) throws RestClientException
Description copied from interface:RestOperationsUpdate 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
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.NOTE: The standard JDK HTTP library does not support HTTP PATCH. You need to use the Apache HttpComponents or OkHttp request factory.
- Specified by:
patchForObjectin 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:
HttpEntity,InterceptingHttpAccessor.setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory),HttpComponentsAsyncClientHttpRequestFactory,OkHttp3ClientHttpRequestFactory
patchForObject
@Nullable public <T> T patchForObject(URI url, @Nullable Object request, Class<T> responseType) throws RestClientException
Description copied from interface:RestOperationsUpdate a resource by PATCHing the given object to the URL, and return the representation found in the response.The
requestparameter can be aHttpEntityin order to add additional HTTP headers to the request.NOTE: The standard JDK HTTP library does not support HTTP PATCH. You need to use the Apache HttpComponents or OkHttp request factory.
- Specified by:
patchForObjectin 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:
HttpEntity,InterceptingHttpAccessor.setRequestFactory(org.springframework.http.client.ClientHttpRequestFactory),HttpComponentsAsyncClientHttpRequestFactory,OkHttp3ClientHttpRequestFactory
delete
public void delete(String url, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsDelete the resources at the specified URI.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
deletein interfaceRestOperations- Parameters:
url- the URLuriVariables- the variables to expand in the template- Throws:
RestClientException
delete
public void delete(String url, Map<String,?> uriVariables) throws RestClientException
Description copied from interface:RestOperationsDelete the resources at the specified URI.URI Template variables are expanded using the given map.
- Specified by:
deletein interfaceRestOperations- Parameters:
url- the URLuriVariables- the variables to expand the template- Throws:
RestClientException
delete
public void delete(URI url) throws RestClientException
Description copied from interface:RestOperationsDelete the resources at the specified URL.- Specified by:
deletein interfaceRestOperations- Parameters:
url- the URL- Throws:
RestClientException
optionsForAllow
public Set<HttpMethod> optionsForAllow(String url, Object... uriVariables) throws RestClientException
Description copied from interface:RestOperationsReturn the value of the Allow header for the given URI.URI Template variables are expanded using the given URI variables, if any.
- Specified by:
optionsForAllowin 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 RestClientException
Description copied from interface:RestOperationsReturn the value of the Allow header for the given URI.URI Template variables are expanded using the given map.
- Specified by:
optionsForAllowin 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(URI url) throws RestClientException
Description copied from interface:RestOperationsReturn the value of the Allow header for the given URL.- Specified by:
optionsForAllowin 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:RestOperationsExecute 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.
- Specified by:
exchangein 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 of the return valueuriVariables- 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 RestClientException
Description copied from interface:RestOperationsExecute 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.
- Specified by:
exchangein 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 of the return valueuriVariables- 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:RestOperationsExecute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity.- Specified by:
exchangein 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 of the return value- 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:RestOperationsExecute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity. The givenParameterizedTypeReferenceis 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:
exchangein 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 of the return valueuriVariables- 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 RestClientException
Description copied from interface:RestOperationsExecute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity. The givenParameterizedTypeReferenceis 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:
exchangein 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 of the return valueuriVariables- 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:RestOperationsExecute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response asResponseEntity. The givenParameterizedTypeReferenceis 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:
exchangein 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 of the return value- Returns:
- the response as entity
- Throws:
RestClientException
exchange
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, Class<T> responseType) throws RestClientException
Description copied from interface:RestOperationsExecute the request specified in the givenRequestEntityand 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);- Specified by:
exchangein interfaceRestOperations- Parameters:
requestEntity- the entity to write to the requestresponseType- the type of the return value- Returns:
- the response as entity
- Throws:
RestClientException
exchange
public <T> ResponseEntity<T> exchange(RequestEntity<?> requestEntity, ParameterizedTypeReference<T> responseType) throws RestClientException
Description copied from interface:RestOperationsExecute the request specified in the givenRequestEntityand return the response asResponseEntity. The givenParameterizedTypeReferenceis 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);- Specified by:
exchangein interfaceRestOperations- Parameters:
requestEntity- the entity to write to the requestresponseType- the type of the return value- Returns:
- the response as entity
- Throws:
RestClientException
execute
@Nullable public <T> T execute(String url, 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
RequestCallbackorResponseExtractoronly, but not both, consider using:- Specified by:
executein 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 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 url, HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor, Map<String,?> 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 map.
To provide a
RequestCallbackorResponseExtractoronly, but not both, consider using:- Specified by:
executein 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 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
RequestCallbackorResponseExtractoronly, but not both, consider using:- Specified by:
executein 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 protected <T> T doExecute(URI url, @Nullable HttpMethod method, @Nullable RequestCallback requestCallback, @Nullable ResponseExtractor<T> responseExtractor) throws RestClientException
Execute the given method on the provided URI.The
ClientHttpRequestis 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
handleResponse
protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException
Handle the given response, performing appropriate logging and invoking theResponseErrorHandlerif 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:
setErrorHandler(org.springframework.web.client.ResponseErrorHandler)
acceptHeaderRequestCallback
public <T> RequestCallback acceptHeaderRequestCallback(Class<T> responseType)
Return aRequestCallbackthat sets the requestAcceptheader based on the given response type, cross-checked against the configured message converters.
httpEntityCallback
public <T> RequestCallback httpEntityCallback(@Nullable Object requestBody)
Return aRequestCallbackimplementation that writes the given object to the request stream.
httpEntityCallback
public <T> RequestCallback httpEntityCallback(@Nullable Object requestBody, Type responseType)
Return aRequestCallbackimplementation that:- Sets the request
Acceptheader 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
public <T> ResponseExtractor<ResponseEntity<T>> responseEntityExtractor(Type responseType)
Return aResponseExtractorthat prepares aResponseEntity.
headersExtractor
protected ResponseExtractor<HttpHeaders> headersExtractor()
Return a response extractor forHttpHeaders.