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实现文件上传下载
作者:编程随笔
出处:http://www.cnblogs.com/nuccch/
声明:本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接。