Class RestTemplateBuilder
java.lang.Object
org.springframework.boot.web.client.RestTemplateBuilder
Builder that can be used to configure and create a 
RestTemplate. Provides
 convenience methods to register converters, error handlers and
 UriTemplateHandlers.
 
 By default, the built RestTemplate will attempt to use the most suitable
 ClientHttpRequestFactory, call detectRequestFactory(false) if you prefer to keep the default. In a typical
 auto-configured Spring Boot application this builder is available as a bean and can be
 injected whenever a RestTemplate is needed.
- Since:
- 1.4.0
- Author:
- Stephane Nicoll, Phillip Webb, Andy Wilkinson, Brian Clozel, Dmytro Nosan, Kevin Strijbos, Ilya Lukyanovich, Scott Frederick, Yanming Zhou
- 
Constructor SummaryConstructorsConstructorDescriptionRestTemplateBuilder(RestTemplateCustomizer... customizers) Create a newRestTemplateBuilderinstance.
- 
Method SummaryModifier and TypeMethodDescriptionadditionalCustomizers(Collection<? extends RestTemplateCustomizer> customizers) AddRestTemplateCustomizersthat should be applied to theRestTemplate.additionalCustomizers(RestTemplateCustomizer... customizers) AddRestTemplateCustomizersthat should be applied to theRestTemplate.additionalInterceptors(Collection<? extends ClientHttpRequestInterceptor> interceptors) Add additionalClientHttpRequestInterceptorsthat should be used with theRestTemplate.additionalInterceptors(ClientHttpRequestInterceptor... interceptors) Add additionalClientHttpRequestInterceptorsthat should be used with theRestTemplate.additionalMessageConverters(Collection<? extends HttpMessageConverter<?>> messageConverters) Add additionalHttpMessageConvertersthat should be used with theRestTemplate.additionalMessageConverters(HttpMessageConverter<?>... messageConverters) Add additionalHttpMessageConvertersthat should be used with theRestTemplate.additionalRequestCustomizers(Collection<? extends RestTemplateRequestCustomizer<?>> requestCustomizers) Add theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest.additionalRequestCustomizers(RestTemplateRequestCustomizer<?>... requestCustomizers) Add theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest.basicAuthentication(String username, String password) Add HTTP Basic Authentication to requests with the given username/password pair, unless a custom Authorization header has been set before.basicAuthentication(String username, String password, Charset charset) Add HTTP Basic Authentication to requests with the given username/password pair, unless a custom Authorization header has been set before.build()Build a newRestTemplateinstance and configure it using this builder.<T extends RestTemplate>
 TBuild a newRestTemplateinstance of the specified type and configure it using this builder.Build a newClientHttpRequestFactoryinstance using the settings of this builder.<T extends RestTemplate>
 Tconfigure(T restTemplate) Configure the providedRestTemplateinstance using this builder.connectTimeout(Duration connectTimeout) Sets the connection timeout on the underlyingClientHttpRequestFactory.customizers(Collection<? extends RestTemplateCustomizer> customizers) Set theRestTemplateCustomizersthat should be applied to theRestTemplate.customizers(RestTemplateCustomizer... customizers) Set theRestTemplateCustomizersthat should be applied to theRestTemplate.defaultHeader(String name, String... values) Add a default header that will be set if not already present on the outgoingClientHttpRequest.Set theHttpMessageConvertersthat should be used with theRestTemplateto the default set.detectRequestFactory(boolean detectRequestFactory) Set if theClientHttpRequestFactoryshould be detected based on the classpath.errorHandler(ResponseErrorHandler errorHandler) Set theResponseErrorHandlerthat should be used with theRestTemplate.interceptors(Collection<ClientHttpRequestInterceptor> interceptors) Set theClientHttpRequestInterceptorsthat should be used with theRestTemplate.interceptors(ClientHttpRequestInterceptor... interceptors) Set theClientHttpRequestInterceptorsthat should be used with theRestTemplate.messageConverters(Collection<? extends HttpMessageConverter<?>> messageConverters) Set theHttpMessageConvertersthat should be used with theRestTemplate.messageConverters(HttpMessageConverter<?>... messageConverters) Set theHttpMessageConvertersthat should be used with theRestTemplate.readTimeout(Duration readTimeout) Sets the read timeout on the underlyingClientHttpRequestFactory.Sets the redirect strategy on the underlyingClientHttpRequestFactory.requestCustomizers(Collection<? extends RestTemplateRequestCustomizer<?>> requestCustomizers) Set theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest.requestCustomizers(RestTemplateRequestCustomizer<?>... requestCustomizers) Set theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest.requestFactory(Class<? extends ClientHttpRequestFactory> requestFactoryType) Set theClientHttpRequestFactoryclass that should be used with theRestTemplate.requestFactory(Function<ClientHttpRequestFactorySettings, ClientHttpRequestFactory> requestFactoryFunction) Deprecated, for removal: This API element is subject to removal in a future version.requestFactory(Supplier<ClientHttpRequestFactory> requestFactorySupplier) Set theSupplierofClientHttpRequestFactorythat should be called each time webuild()a newRestTemplateinstance.requestFactoryBuilder(ClientHttpRequestFactoryBuilder<?> requestFactoryBuilder) Set theClientHttpRequestFactoryBuilderthat should be used each time webuild()a newRestTemplateinstance.requestFactorySettings(UnaryOperator<ClientHttpRequestFactorySettings> requestFactorySettingsCustomizer) Update theClientHttpRequestFactorySettingsusing the given customizer.requestFactorySettings(ClientHttpRequestFactorySettings requestFactorySettings) Sets theClientHttpRequestFactorySettings.Set a root URL that should be applied to each request that starts with'/'.setConnectTimeout(Duration connectTimeout) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofconnectTimeout(Duration)setReadTimeout(Duration readTimeout) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofreadTimeout(Duration)setSslBundle(SslBundle sslBundle) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofsslBundle(SslBundle)Sets the SSL bundle on the underlyingClientHttpRequestFactory.uriTemplateHandler(UriTemplateHandler uriTemplateHandler) Set theUriTemplateHandlerthat should be used with theRestTemplate.
- 
Constructor Details- 
RestTemplateBuilderCreate a newRestTemplateBuilderinstance.- Parameters:
- customizers- any- RestTemplateCustomizersthat should be applied when the- RestTemplateis built
 
 
- 
- 
Method Details- 
detectRequestFactorySet if theClientHttpRequestFactoryshould be detected based on the classpath. Default iftrue.- Parameters:
- detectRequestFactory- if the- ClientHttpRequestFactoryshould be detected
- Returns:
- a new builder instance
 
- 
rootUriSet a root URL that should be applied to each request that starts with'/'. The root URL will only apply whenStringvariants of theRestTemplatemethods are used for specifying the request URL.- Parameters:
- rootUri- the root URI or- null
- Returns:
- a new builder instance
 
- 
messageConvertersSet theHttpMessageConvertersthat should be used with theRestTemplate. Setting this value will replace any previously configured converters and any converters configured on the builder will replace RestTemplate's default converters.- Parameters:
- messageConverters- the converters to set
- Returns:
- a new builder instance
- See Also:
 
- 
messageConverterspublic RestTemplateBuilder messageConverters(Collection<? extends HttpMessageConverter<?>> messageConverters) Set theHttpMessageConvertersthat should be used with theRestTemplate. Setting this value will replace any previously configured converters and any converters configured on the builder will replace RestTemplate's default converters.- Parameters:
- messageConverters- the converters to set
- Returns:
- a new builder instance
- See Also:
 
- 
additionalMessageConverterspublic RestTemplateBuilder additionalMessageConverters(HttpMessageConverter<?>... messageConverters) Add additionalHttpMessageConvertersthat should be used with theRestTemplate. Any converters configured on the builder will replace RestTemplate's default converters.- Parameters:
- messageConverters- the converters to add
- Returns:
- a new builder instance
- See Also:
 
- 
additionalMessageConverterspublic RestTemplateBuilder additionalMessageConverters(Collection<? extends HttpMessageConverter<?>> messageConverters) Add additionalHttpMessageConvertersthat should be used with theRestTemplate. Any converters configured on the builder will replace RestTemplate's default converters.- Parameters:
- messageConverters- the converters to add
- Returns:
- a new builder instance
- See Also:
 
- 
defaultMessageConvertersSet theHttpMessageConvertersthat should be used with theRestTemplateto the default set. Calling this method will replace any previously defined converters.- Returns:
- a new builder instance
- See Also:
 
- 
interceptorsSet theClientHttpRequestInterceptorsthat should be used with theRestTemplate. Setting this value will replace any previously defined interceptors.- Parameters:
- interceptors- the interceptors to set
- Returns:
- a new builder instance
- Since:
- 1.4.1
- See Also:
 
- 
interceptorsSet theClientHttpRequestInterceptorsthat should be used with theRestTemplate. Setting this value will replace any previously defined interceptors.- Parameters:
- interceptors- the interceptors to set
- Returns:
- a new builder instance
- Since:
- 1.4.1
- See Also:
 
- 
additionalInterceptorsAdd additionalClientHttpRequestInterceptorsthat should be used with theRestTemplate.- Parameters:
- interceptors- the interceptors to add
- Returns:
- a new builder instance
- Since:
- 1.4.1
- See Also:
 
- 
additionalInterceptorspublic RestTemplateBuilder additionalInterceptors(Collection<? extends ClientHttpRequestInterceptor> interceptors) Add additionalClientHttpRequestInterceptorsthat should be used with theRestTemplate.- Parameters:
- interceptors- the interceptors to add
- Returns:
- a new builder instance
- Since:
- 1.4.1
- See Also:
 
- 
requestFactorypublic RestTemplateBuilder requestFactory(Class<? extends ClientHttpRequestFactory> requestFactoryType) Set theClientHttpRequestFactoryclass that should be used with theRestTemplate.- Parameters:
- requestFactoryType- the request factory type to use
- Returns:
- a new builder instance
- See Also:
 
- 
requestFactorypublic RestTemplateBuilder requestFactory(Supplier<ClientHttpRequestFactory> requestFactorySupplier) Set theSupplierofClientHttpRequestFactorythat should be called each time webuild()a newRestTemplateinstance.- Parameters:
- requestFactorySupplier- the supplier for the request factory
- Returns:
- a new builder instance
- Since:
- 2.0.0
- See Also:
 
- 
requestFactory@Deprecated(since="3.4.0", forRemoval=true) public RestTemplateBuilder requestFactory(Function<ClientHttpRequestFactorySettings, ClientHttpRequestFactory> requestFactoryFunction) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofrequestFactoryBuilder(ClientHttpRequestFactoryBuilder)Set the request factory function that should be called to provide aClientHttpRequestFactoryeach time webuild()a newRestTemplateinstance.- Parameters:
- requestFactoryFunction- the settings to request factory function
- Returns:
- a new builder instance
- Since:
- 3.0.0
- See Also:
 
- 
requestFactoryBuilderpublic RestTemplateBuilder requestFactoryBuilder(ClientHttpRequestFactoryBuilder<?> requestFactoryBuilder) Set theClientHttpRequestFactoryBuilderthat should be used each time webuild()a newRestTemplateinstance.- Parameters:
- requestFactoryBuilder- the- ClientHttpRequestFactoryBuilderto use
- Returns:
- a new builder instance
- Since:
- 3.4.0
- See Also:
 
- 
uriTemplateHandlerSet theUriTemplateHandlerthat should be used with theRestTemplate.- Parameters:
- uriTemplateHandler- the URI template handler to use
- Returns:
- a new builder instance
 
- 
errorHandlerSet theResponseErrorHandlerthat should be used with theRestTemplate.- Parameters:
- errorHandler- the error handler to use
- Returns:
- a new builder instance
 
- 
basicAuthenticationAdd HTTP Basic Authentication to requests with the given username/password pair, unless a custom Authorization header has been set before.- Parameters:
- username- the user name
- password- the password
- Returns:
- a new builder instance
- Since:
- 2.1.0
- See Also:
 
- 
basicAuthenticationAdd HTTP Basic Authentication to requests with the given username/password pair, unless a custom Authorization header has been set before.- Parameters:
- username- the user name
- password- the password
- charset- the charset to use
- Returns:
- a new builder instance
- Since:
- 2.2.0
 
- 
defaultHeaderAdd a default header that will be set if not already present on the outgoingClientHttpRequest.- Parameters:
- name- the name of the header
- values- the header values
- Returns:
- a new builder instance
- Since:
- 2.2.0
 
- 
requestFactorySettingspublic RestTemplateBuilder requestFactorySettings(ClientHttpRequestFactorySettings requestFactorySettings) Sets theClientHttpRequestFactorySettings. This will replace any previously setconnectTimeout,readTimeoutandsslBundlevalues.- Parameters:
- requestFactorySettings- the request factory settings
- Returns:
- a new builder instance
- Since:
- 3.4.0
 
- 
requestFactorySettingspublic RestTemplateBuilder requestFactorySettings(UnaryOperator<ClientHttpRequestFactorySettings> requestFactorySettingsCustomizer) Update theClientHttpRequestFactorySettingsusing the given customizer.- Parameters:
- requestFactorySettingsCustomizer- a- UnaryOperatorto update request factory settings
- Returns:
- a new builder instance
- Since:
- 3.4.1
 
- 
setConnectTimeout@Deprecated(since="3.4.0", forRemoval=true) public RestTemplateBuilder setConnectTimeout(Duration connectTimeout) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofconnectTimeout(Duration)Sets the connection timeout on the underlyingClientHttpRequestFactory.- Parameters:
- connectTimeout- the connection timeout
- Returns:
- a new builder instance.
- Since:
- 2.1.0
 
- 
connectTimeoutSets the connection timeout on the underlyingClientHttpRequestFactory.- Parameters:
- connectTimeout- the connection timeout
- Returns:
- a new builder instance.
- Since:
- 3.4.0
 
- 
setReadTimeout@Deprecated(since="3.4.0", forRemoval=true) public RestTemplateBuilder setReadTimeout(Duration readTimeout) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofreadTimeout(Duration)Sets the read timeout on the underlyingClientHttpRequestFactory.- Parameters:
- readTimeout- the read timeout
- Returns:
- a new builder instance.
- Since:
- 2.1.0
 
- 
readTimeoutSets the read timeout on the underlyingClientHttpRequestFactory.- Parameters:
- readTimeout- the read timeout
- Returns:
- a new builder instance.
- Since:
- 3.4.0
 
- 
redirectsSets the redirect strategy on the underlyingClientHttpRequestFactory.- Parameters:
- redirects- the redirect strategy
- Returns:
- a new builder instance.
- Since:
- 3.4.1
 
- 
setSslBundle@Deprecated(since="3.4.0", forRemoval=true) public RestTemplateBuilder setSslBundle(SslBundle sslBundle) Deprecated, for removal: This API element is subject to removal in a future version.since 3.4.0 for removal in 4.0.0 in favor ofsslBundle(SslBundle)Sets the SSL bundle on the underlyingClientHttpRequestFactory.- Parameters:
- sslBundle- the SSL bundle
- Returns:
- a new builder instance
- Since:
- 3.1.0
 
- 
sslBundleSets the SSL bundle on the underlyingClientHttpRequestFactory.- Parameters:
- sslBundle- the SSL bundle
- Returns:
- a new builder instance
- Since:
- 3.4.0
 
- 
customizersSet theRestTemplateCustomizersthat should be applied to theRestTemplate. Customizers are applied in the order that they were added after builder configuration has been applied. Setting this value will replace any previously configured customizers.- Parameters:
- customizers- the customizers to set
- Returns:
- a new builder instance
- See Also:
 
- 
customizersSet theRestTemplateCustomizersthat should be applied to theRestTemplate. Customizers are applied in the order that they were added after builder configuration has been applied. Setting this value will replace any previously configured customizers.- Parameters:
- customizers- the customizers to set
- Returns:
- a new builder instance
- See Also:
 
- 
additionalCustomizersAddRestTemplateCustomizersthat should be applied to theRestTemplate. Customizers are applied in the order that they were added after builder configuration has been applied.- Parameters:
- customizers- the customizers to add
- Returns:
- a new builder instance
- See Also:
 
- 
additionalCustomizerspublic RestTemplateBuilder additionalCustomizers(Collection<? extends RestTemplateCustomizer> customizers) AddRestTemplateCustomizersthat should be applied to theRestTemplate. Customizers are applied in the order that they were added after builder configuration has been applied.- Parameters:
- customizers- the customizers to add
- Returns:
- a new builder instance
- See Also:
 
- 
requestCustomizerspublic RestTemplateBuilder requestCustomizers(RestTemplateRequestCustomizer<?>... requestCustomizers) Set theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest. Customizers are applied in the order that they were added. Setting this value will replace any previously configured request customizers.- Parameters:
- requestCustomizers- the request customizers to set
- Returns:
- a new builder instance
- Since:
- 2.2.0
- See Also:
 
- 
requestCustomizerspublic RestTemplateBuilder requestCustomizers(Collection<? extends RestTemplateRequestCustomizer<?>> requestCustomizers) Set theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest. Customizers are applied in the order that they were added. Setting this value will replace any previously configured request customizers.- Parameters:
- requestCustomizers- the request customizers to set
- Returns:
- a new builder instance
- Since:
- 2.2.0
- See Also:
 
- 
additionalRequestCustomizerspublic RestTemplateBuilder additionalRequestCustomizers(RestTemplateRequestCustomizer<?>... requestCustomizers) Add theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest. Customizers are applied in the order that they were added.- Parameters:
- requestCustomizers- the request customizers to add
- Returns:
- a new builder instance
- Since:
- 2.2.0
- See Also:
 
- 
additionalRequestCustomizerspublic RestTemplateBuilder additionalRequestCustomizers(Collection<? extends RestTemplateRequestCustomizer<?>> requestCustomizers) Add theRestTemplateRequestCustomizersthat should be applied to theClientHttpRequest. Customizers are applied in the order that they were added.- Parameters:
- requestCustomizers- the request customizers to add
- Returns:
- a new builder instance
- Since:
- 2.2.0
- See Also:
 
- 
buildBuild a newRestTemplateinstance and configure it using this builder.- Returns:
- a configured RestTemplateinstance.
- See Also:
 
- 
buildBuild a newRestTemplateinstance of the specified type and configure it using this builder.- Type Parameters:
- T- the type of rest template
- Parameters:
- restTemplateClass- the template type to create
- Returns:
- a configured RestTemplateinstance.
- See Also:
 
- 
configureConfigure the providedRestTemplateinstance using this builder.- Type Parameters:
- T- the type of rest template
- Parameters:
- restTemplate- the- RestTemplateto configure
- Returns:
- the rest template instance
- See Also:
 
- 
buildRequestFactoryBuild a newClientHttpRequestFactoryinstance using the settings of this builder.- Returns:
- a ClientHttpRequestFactoryornull
- Since:
- 2.2.0
 
 
- 
requestFactoryBuilder(ClientHttpRequestFactoryBuilder)