ESA RestClient

ESA RestClient is an asynchronous event-driven http client based on netty.

Features

  • Http1/H2/H2cUpgrade
  • Https
  • Epoll/NIO
  • Serialize and Deserialize
  • Interceptor
  • Filter
  • Retry, Redirect, 100-expect-continue
  • Segmented read/write
  • Multipart
  • Metrics
  • more features…

Getting Started

It’s very easy to get started with RestClient!

Codec

用户请求时RestClient会自动根据用户的 HeadersEntity 自动选择合适的DecoderEncoder进行DecodeEncode。同时RestClient也支持用户在codec前后进行插入业务逻辑。

Interceptor

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

DNS扩展

在每次建立连接前,client可能需要将域名解析成IP地址,RestClient通过适配netty原生的AddressResolverGroup提供了一种更加简单、 灵活的NameResolver扩展,用于将url地址中的域名解析成IP地址。

大文件上传

RestClient支持大文件上传功能。需要说明地是,对于内容较小的文件,可通过直接将文件内容写入请求body。 本文只讨论当文件内容过大,直接写入有OOM风险时的大文件上传功能。

连接池配置

连接的创建和销毁通常比较消耗资源,为了提升高并发下场景下的通信效率,RestClient会自动使用连接池来管理与服务端的长连接

其他功能

RestClient支持用户配置请求级别读超时、请求重试、请求重定向、100-expect-continue 等功能。

指标统计

RestClient提供了IO线程池及连接池的Metric指标统计,使用时通过RestClient实例便可直接获取。

生命周期

RestClient中的每个请求都拥有相同的生命周期,了解请求的生命周期便于用户更好地使用RestClient

请求分流

RestClient支持用户通过配置文件的方式对请求再次进行分流。


Last modified February 18, 2022: complete document migration (#126) (1375641)