Interceptor

RestClient支持通过builder配置和SPI加载两种方式配置RestInterceptor

Builder配置

在构造RestClient时传入自定义的RestInterceptor实例,如:

final RestClient client = RestClient.create()
        .addInterceptor((request, next) -> {
            System.out.println("Interceptor");
            return next.proceed(request);
        }).build();

SPI

普通SPI

RestClient支持通过Spi的方式加载RestInterceptor接口的实现类,使用时只需要按照SPI的加载规则将自定义的RestInterceptor放入指定的目录下即可。

RestInterceptorFactory

如果用户自定义的RestInterceptor对于不同RestClient的配置有不同的实现,则用户可以实现RestInterceptorFactory接口,并按照SPI的加载规则将自定义的RestInterceptorFactory放入指定的目录下即可。

public interface RestInterceptorFactory {
    Collection<RestInterceptor> interceptors(RestClientOptions clientOptions);
}

RestClient构建时将调用RestInterceptorFactory.interceptors(RestClientOptions clientOptions),该方法返回的所有RestInterceptor都将加入到构建好的RestClient中。

执行时机

请求处理完整流程中的RestInterceptor


Last modified April 22, 2022: add docs about traffic-split (34b84ce)