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();
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
。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
Last modified April 22, 2022: add docs about traffic-split (34b84ce)