This is the multi-page printable view of this section. Click here to print.
其他功能
RestClient
支持用户配置请求级别读超时、请求重试、请求重定向、100-expect-continue 等功能。- 1: 读超时
- 2: 重试
- 3: 重定向
- 4: 100-expect-continue
1 - 读超时
RestClient
的读超时功能通过底层的HttpClient
来实现,可以分别支持 Client 级别 及 Request 级别。默认读超时为6000L
。Client级别读超时
Client级别的读超时将对该Client下的所有请求生效,具体配置方式如下:
final RestClient client = RestClient.create()
.readTimeout(3000L)
.build();
Request级别读超时
当Request设置了读超时,其数据将覆盖Client设置的读超时,具体配置方式如下:
final RestClient client = RestClient.ofDefault();
final String entity = client.get("http://127.0.0.1:8081/")
.readTimeout(3000L)
.execute()
.toCompletableFuture()
.get()
.bodyToEntity(String.class);
2 - 重试
RestClient
的重试功能通过底层的HttpClient
来实现,可以分别支持 Client 级别 及 Request 级别。默认最大重试次数为3。Client级别重试
Client级别的重试将对该Client下的所有 Request 生效,使用时,可以通过自定义RetryOptions
参数更改重试次数、重试条件、重试间隔时间等。具体配置方式如下:
final RestClient client = RestClient.create()
.retryOptions(RetryOptions.options()
.maxRetries(3)
.intervalMs(value -> value)
.predicate((request, response, ctx, cause) -> cause != null)
.build())
.connectionPoolSize(2048)
.build();
Request级别重试
当Request设置了重试次数,其数据将覆盖Client设置的重试次数,具体配置方式如下:
final RestClient client = RestClient.ofDefault();
final String entity = client.get("http://127.0.0.1:8081/")
.maxRetries(3)
.execute()
.toCompletableFuture()
.get()
.bodyToEntity(String.class);
3 - 重定向
RestClient
的重定向功能通过底层的HttpClient
来实现,可以分别支持 Client 级别 及 Request 级别。默认最大重定向次数为5。Client级别重定向
Client级别的重定向将对该Client下的所有 Request 生效,具体配置方式如下:
final RestClient client = RestClient.create()
.maxRedirects(3)
.build();
Request级别重定向
当Request设置了重定向次数,其数据将覆盖Client设置的重定向次数,具体配置方式如下:
final RestClient client = RestClient.ofDefault();
final String entity = client.get("http://127.0.0.1:8081/")
.maxRedirects(3)
.execute()
.toCompletableFuture()
.get()
.bodyToEntity(String.class);
4 - 100-expect-continue
RestClient
的100-expect-continue
功能通过底层的HttpClient
来实现,可以分别支持 Client 级别 及 Request 级别。默认100-expect-continue
为false。Client级别100-expect-continue
Client级别的100-expect-continue
将对该Client下的所有 Request 生效,具体配置方式如下:
final RestClient client = RestClient.create()
.useExpectContinue(true)
.build();
Request级别100-expect-continue
当Request设置了100-expect-continue
,其数据将覆盖Client设置的100-expect-continue
,具体配置方式如下:
final String entity = client.get("http://127.0.0.1:8081/")
.disableExpectContinue()
.execute()
.toCompletableFuture()
.get()
.bodyToEntity(String.class);