Builder配置
在构造RestClient
时传入自定义的RestInterceptor
实例,如:
final RestClient client = RestClient.create()
.addInterceptor((request, next) -> {
System.out.println("Interceptor");
return next.proceed(request);
}).build();
Tip
多个拦截器之间通过getOrder()
方法返回值区分执行顺序,值越小,优先级越高。
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
。