是由贡献的客户端框架,主要用在中,但是由于其易用的API、强大的功能、请求的快速等特点,也被大量采用在后端开发领域。本系列文章讲述的基本使用、的高级功能以及源码的解析等,请持续关注。
本篇文章是此系列的第一篇。
是一款优秀的客户端框架,是发展到版本之后的名字。在maven中央仓库搜索,可以看到包名为项目的最后版本号是,而版本之后,包名更改为,同时版本号从开始。后面为了区分,之后的版本统一称为。
目前已更新到,版本的编写语言为Java,更新到版本以后,编写语言修改为(可见对的支持力度)。因为笔者对语言不是很了解,而且主要领域在后端开发,所以本系列文章都是以版本的最后一个更新版本为基础构建代码、分析代码。
在后端领域,出现比较早而且使用仍然很广泛的客户端框架非莫属了,目前大量项目和公司仍在采用该框架。有着不错的性能、丰富的功能以及强大的自定义实现等特色。但是随着技术的发展和设计理念的改变,显的有些落伍。和相比,主要的劣势在于的API设计过于臃肿,使用起来有诸多不便,此外对于一些功能没有提供原生化的支持,需要在每次使用的时候自定义(比如池化HTTP请求、空闲连接处理等),对于首次接触的开发者就显得不是特别友好。而是一款对新手很友好的框架,简便易懂的API以及原生封装高级功能的特性使得用户在进行简单的请求时只需要编写少量代码即可完成功能。
下面的示例分别使用和发送请求,比较两者的代码量和功能。
示例的代码量明显多于,而且后者代码的更易读,同时后者已经默认实现连接池、重试等功能,而前者要是支持这些额外的功能则需要自定义实现。
中提供了原生的HTTP客户端框架,位于包中。的API设计的也简单易懂,完成功能所需的代码量也不是很多,而且API的设计和有几分相似。
但是由于出现的比较晚,提供的功能比较有限,比如对于的请求就很难实现。但是凭借原生的支持以及优秀的API设计,我觉得它是一个很有前途的HTTP客户端框架。
能在目前众多客户端框架中脱颖而出,并受到持续追捧,在于它提供了一些优秀的功能。
- 支持允许对同一主机的所有请求共享一个连接。
- 使用连接池降低请求延迟。
- 自动处理GZip压缩减少流量消耗。
- 缓存请求响应,避免网络重复请求。
- 网络出现问题时,能够静默恢复。
- 对于多个IP的服务,失败时能够自动切换到备用地址。
- 支持现代TLS功能(TLS 1.3,ALPN,证书固定)。
- 请求/响应API具有流畅的构建器和不变性。
- 支持同步请求和异步请求。
- 支持自定义拦截器以实现更高级的功能(例如重定向、日志打印等)。
本篇内容介绍了的来源历史、和其他框架进行了比较、介绍了特色功能并提供了使用的基础示例。下篇文章将会介绍提供的功能,介绍下该功能如何帮助我们完善代码。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/1663.html