This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

其他功能

RestClient支持用户配置请求级别读超时、请求重试、请求重定向、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

RestClient100-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);