Java Http客户端选型
JDK自带
HTTPURLConnect:功能单一
Apache HttpClient
https://hc.apache.org/index.html
是一个比较古老的HTTP框架,使用非常普遍。
OkHTTP
https://square.github.io/okhttp/
HTTP框架新秀,具备一些新特性,如:支持HTTP2,连接池,响应缓存等。
Netty
https://netty.io/
基于原始套接字实现的比较底层的网络编程库。
REST Template & WebClient
Spring Framework提供的REST客户端,实际上是一个框架级的封装,底层的通信实现可以基于HTTPURLConnection,Apache HttpClient,OKHttp,以及Netty,当项目中使用了Spring框架时可以直接使用该API。
缺点:与Spring框架绑定, 必须使用Spring框架才能使用该API。
Feign
https://github.com/OpenFeign/feign
Feign跟Spring Framework中提供的RestTemplate类似,也是一个框架级的封装,而且是一个完全可以基于注解配置的API库。
底层的通信实现也可以基于HTTPURLConnection,Apache HttpClient,OKHttp,甚至是Java11 Http2。
同时,Feign还提供了一些在业务层非常方便使用的特性,如:重试,请求参数编码器,响应结果编码器等等。
相比起上述其他客户端而言,Feign提供的特性更加便于业务层使用。
另外,Spring Cloud框架还将Feign与Spring进行了集成,独立出一个新的模块:spring-cloud-openfeign 。
当在项目中没有使用Spring Framework时,可以独立使用Feign框架。
如果在项目中已经使用Spring Framework,最便利的方式是直接使用spring-cloud-openfeign,该模块已经提供了一些在Spring容器环境下使用Feign框架的注解,可以大大提高生产效率。
关于Feign的使用可以参考:Feign入门介绍,Feign实现动态URL,Feign实现文件上传下载
Java Http客户端选型的更多相关文章
- Redis 异步客户端选型及落地实践
作者:京东科技 王晨 Redis异步客户端选型及落地实践 可视化服务编排系统是能够通过线上可视化拖拽.配置的方式完成对接口的编排,可在线完成服务的调试.测试,实现业务需求的交付,详细内容可参考:htt ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- Nginx反向代理后,java获取客户端真实IP地址
一般情况下,java获取客户端IP地址的方法为request.getRemoteAddr();但这只是在没有网关或者代理的情况下,如果客户端将请求发送到nginx,再由nginx进行反向代理到目标服务 ...
- JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)
1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...
- Hadoop JAVA HDFS客户端操作
JAVA HDFS客户端操作 通过API操作HDFS org.apache.logging.log4jlog4j-core2.8.2org.apache.hadoophadoop-common${ha ...
- 我的JAVA后端技术选型(2020版)
JAVA后端技术选型(2020版)集群网关: LVS+keepalived 或 HAProxy服务网关 : zuul1.x注册中心: Eureka,Zookeeper配置中心: Spring Clou ...
- Java 自定义客户端与服务器
一:浏览器如何请求数据基本原理 基本原理: 当浏览器输入地址向服务器请求数据时,实际上浏览器会在内部建立一个Socket对象,把http请求报文转变成byet[]字节,然后调用Socket的方法把这些 ...
- JAVA获取客户端IP地址
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- [Java]Hessian客户端和服务端代码例子
简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...
- java的客户端可以连接CPlus的服务端
今天做的实验,用c++做的服务端,端口号为6000:用java做的客户端,IP为127.0.0.1,port为6000,结果双方可以连接上线: 贴代码: 服务端: #include <winso ...
随机推荐
- [转帖]Optimizing Block Device Parameter Settings of Linux
https://support.huawei.com/enterprise/en/doc/EDOC1000181485/ddbc0e8b/optimizing-block-device-paramet ...
- [转帖]mysql百万级性能瓶颈-数据库选型
项目中使用了mysql数据库,但数据量增长太快,不久到了百万级,很快又到表到了千万级,尝试了各种优化方式,最终效果仍难达到秒级响应,那么引发了我关于数据库选型到一些思考. 1.mysql的单表性能瓶颈 ...
- [转帖]远超DDR4,速度可达DDR5 6400!DDR5内存技术、产品解析
https://www.sohu.com/a/326810241_616364 内存是计算机技术的重要组成部分,经历了长时间的竞争更替和路线选择之后,PC内存技术被稳定在以DDR技术为基础的发展路线上 ...
- js中forEach的用法、forEach如何跳出循环、forEach与for之间的区别
定义和用法 forEach() 调用数组的每个元素,并将元素传递给回调函数. 注意: forEach() 对于空数组是不会执行回调函数的. 用法: array.forEach(function(cur ...
- element-ui中Select 选择器列表内容居中
<el-select class="my-el-select" v-model="tenantCont" placeholder="请输入机构标 ...
- 【VMware vSAN】使用命令行从vSAN集群中移除ESXi主机并加入到新的vSAN集群。
说明 本文只是陈述了一种方法,不必评判谁对谁错谁好谁坏,选择适合自己的即可. 环境 站点名称 vCenter版本 vSAN集群 集群主机 主机版本 磁盘组 vcsa67.lab.com vCenter ...
- Linux系统NTP配置同步修改硬件时钟
前言: 硬件时钟:即BIOS时间,就是CMOS设置时看到的时间,存储在主板BIOS里,关机及断电后由主板电池供电维持时间的守时. 系统时钟:linux系统Kernel时间,由CPU守时,关机及断 ...
- 2022 多益网络hr面
不知道为啥 我的一面是hr面试,面试官是一个小姐姐,整个面试过程还是比较轻松的 废话不多说,直接上题目 自我介绍(巴拉巴拉巴拉...) 有参与过什么团队协作项目吗,担任了一个什么样的角色,怎么分配任务 ...
- ehlib 排序后 滚动条 不对问题
针对CDS的情况,作者的代码里 好像也不知道什么原因 必须写Cds.First但是,不写的话,就是不行,去掉作者的注释就可以了.
- NC235745 拆路
题目链接 题目 题目描述 有 \(n\) 个城镇,城镇之间有 \(m\) 条道路相连,道路可以看成无向边.每一个城镇都有自己的一个繁荣度 \(v_i\) ,一个城镇 \(u\) 受到的影响 \(p\) ...