前言
本篇栏目主要和大家分享我对国内一款开源框架Forest的一些研究学习文章。
如果大家也在对他感兴趣,并且对他底层实现有一定的好奇,希望我的这个栏目文章可以给到大家一些帮助,节省大家的时间,更快的了解到他。
为什么我会想要使用这个开源框架
确实,如果是调用接口,我们实在是有太多的选择了,feign就是一个好的选择,或者用公司内部封装好的代码。为什么还要在自己的项目里引入一个自己不了解的框架呢?
理由很简单,如下:
想尝试使用新的框架
满足简单好用的需求
源码简单不复杂(因为完成这个工作其实就是一个代理的事)
GitHub上处于比较活跃的状态,并且有人维护
最好国人写的,看注释方便
基于以上理由,最后选中了这个框架,这个框架除了为我的工作提效,更多的是想阅读他的源码,进行学习,因为在比较早之前,我就有过想写类似这样的工具,所以也是一举两得。
这个框架帮助了我能够快速的实现接入第三方API,并且只对我关心的部分进行配置即可。
这个框架能帮你做什么
使用过feign的同学应该都能够很好的理解,Forest本质上就是一个HTTP Client,不同于我们平时自己写代码封装的Http Client,他已经为你做好了封装,我们要做的就是进行个性化配置,调整好我们需要关注的参数即可,比如请求超时时间、连接超时时间…等等,下面引用官网的配置
forest:
bean-id: config0 # 在spring上下文中bean的id, 默认值为forestConfiguration
backend: okhttp3 # 后端HTTP API: okhttp3
max-connections: 1000 # 连接池最大连接数,默认值为500
max-route-connections: 500 # 每个路由的最大连接数,默认值为500
timeout: 3000 # 请求超时时间,单位为毫秒, 默认值为3000
connect-timeout: 3000 # 连接超时时间,单位为毫秒, 默认值为2000
retry-count: 1 # 请求失败后重试次数,默认为0次不重试
ssl-protocol: SSLv3 # 单向验证的HTTPS的默认SSL协议,默认为SSLv3
logEnabled: true # 打开或关闭日志,默认为true
log-request: true # 打开/关闭Forest请求日志(默认为 true)
log-response-status: true # 打开/关闭Forest响应状态日志(默认为 true)
log-response-content: true # 打开/关闭Forest响应内容日志(默认为 false)
通过上面的配置基本已经满足了我们日常的调参需求。
官网的一段话很好地展示了Forest的作用
为什么使用 Forest?
使用 Forest 就像使用类似 Dubbo 那样的 RPC 框架一样,只需要定义接口,调用接口即可,不必关心具体发送 HTTP 请求的细节。同时将 HTTP 请求信息与业务代码解耦,方便您统一管理大量 HTTP 的 URL、Header 等信息。而请求的调用方完全不必在意 HTTP 的具体内容,即使该 HTTP 请求信息发生变更,大多数情况也不需要修改调用发送请求的代码。
与此同时,也不用担心性能和异常问题,因为该框架请求网络的Http Client使用的是我们熟悉的Apache Http Client和okHttp3,这两个都是我们非常熟悉和信赖的客户端。
最后
最后,这个系列的文章,我不会浪费时间写如何使用这个框架,因为官方文档已经写得非常清楚。
接下来的文章,将会分享我是用过程中遇到的一些坑,以及在浏览官方文档时,对于一些功能的实现原理的探究,更多的是去阅读其源码。