首页 > 其他分享 >Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换

Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换

时间:2023-04-22 19:39:25浏览次数:46  
标签:HTTP SpringBoot true 接口 name 默认 restful public Forest


场景

Forest

声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,

是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。

通过在接口上声明注解的方式配置HTTP请求接口。

官网:

Forest

Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换_spring

 

代码地址:

forest: 声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。通过在接口上声明注解的方式配置HTTP请求接口

Forest的功能较多,下面记录一个比较常用的功能,就是调用第三方api获取数据,并将json数据解析成对象。

注:

博客:
霸道流氓气质的博,SpringBoot领域博主

实现

1、需要事先模拟一个第三方api的接口,各种方式均可,除了代码编写、nginx代理等还可以使用如下方式

HTTP JSON接口模拟工具interfake的使用(模拟接口返回json数据):

HTTP JSON接口模拟工具interfake的使用(模拟接口返回json数据)_霸道

按照上面的过程并修改模拟数据的js文件内容为

var Interfake = require('interfake');
var interfake = new Interfake();
interfake.get('/badao').status(200)
.body(
    { 
        "id": 123,
        "name": "霸道的程序猿",
        "age": 100,
        "address":"青岛",
        "banji":"一班"
    }
);
interfake.get('/badaoStu').status(200)
.body(
    { 
        "id": 123,
        "name": "霸道的程序猿",
        "age": 100,
        "address":"青岛",
        "banji":"一班"
    }
);

确保该接口可以用

Forest-声明式HTTP客户端框架-集成到SpringBoot实现调用第三方restful api并实现接口数据转换_HTTP_02

 

2、搭建SpringBoot项目

若依前后端分离版手把手教你本地搭建环境并运行项目:


在上面的基础搭建之后,开始集成Forest。

3、SpringBoot项目中添加依赖

<dependency>
            <groupId>com.dtflys.forest</groupId>
            <artifactId>forest-spring-boot-starter</artifactId>
            <version>1.5.30</version>
        </dependency>

当前版本为1.5.30。

若依框架已经自带json数据的解析依赖。

然后修改配置文件yml,添加forest的相关配置

#Forest 全局配置
forest:
  backend: okhttp3             # 后端HTTP框架(默认为 okhttp3)
  max-connections: 1000        # 连接池最大连接数(默认为 500)
  max-route-connections: 500   # 每个路由的最大连接数(默认为 500)
  max-request-queue-size: 100  # [自v1.5.22版本起可用] 最大请求等待队列大小
  max-async-thread-size: 300   # [自v1.5.21版本起可用] 最大异步线程数
  max-async-queue-size: 16     # [自v1.5.22版本起可用] 最大异步线程池队列大小
  timeout: 3000                # [已不推荐使用] 请求超时时间,单位为毫秒(默认为 3000)
  connect-timeout: 3000        # 连接超时时间,单位为毫秒(默认为 timeout)
  read-timeout: 3000           # 数据读取超时时间,单位为毫秒(默认为 timeout)
  max-retry-count: 0           # 请求失败后重试次数(默认为 0 次不重试)
  ssl-protocol: TLS            # 单向验证的HTTPS的默认TLS协议(默认为 TLS)
  log-enabled: true            # 打开或关闭日志(默认为 true)
  log-request: true            # 打开/关闭Forest请求日志(默认为 true)
  log-response-status: true    # 打开/关闭Forest响应状态日志(默认为 true)
  log-response-content: true   # 打开/关闭Forest响应内容日志(默认为 false)
  async-mode: platform         # [自v1.5.27版本起可用] 异步模式(默认为 platform)

更多详细配置参考官方文档

标签:HTTP,SpringBoot,true,接口,name,默认,restful,public,Forest
From: https://blog.51cto.com/BADAOLIUMANGQZ/6215464

相关文章

  • ZLMediaKit在Windows上实现Rtmp流媒体服务器以及模拟rtmp推流和http-flv拉流播放
    场景开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_霸道流氓气质的博上面讲了ZLMediaKit在Windows上实现按需拉......
  • 使用Maven-shade-plugin打包SpringBoot项目
    使用Maven-shade-plugin打包SpringBoot项目另附参考文章:https://blog.csdn.net/u011441473/article/details/127844885好奇葩的打包之旅,最后在stackoverflow上找到了解决办法,遇到问题,还是多去google吧,国内真不行,百度质量太低,一件很小的事,花了我1个多小时。。下面说一下我遇到......
  • Springboot 多实例负载均衡部署
    Springboot多实例负载均衡部署一、测试代码:控制层测试代码:importjava.net.Inet4Address;importjava.net.InetAddress;importjava.net.UnknownHostException;@Controller@RequestMapping("/test")publicclassTestController{@GetMapping("")@Resp......
  • SpringBoot+Mybatis这个bug估计连作为神仙的您也无法解决--》Invalid bound statement
    最近开发一个调查单的应用系统,加班加点为了解决几个bug,但是最近两天卡在一个bug上。作为一头牛,不能轻易放弃,向困难挑战是牛的精神。1、Invalidbound问题展示首先,我针对题型QuestionType功能,写了五个子功能:增加题型,删除题型,修改题型,查询单条题型,模糊查询多条记录;还写了问题、调查......
  • SpringBoot文件上传
    application.yml配置spring:#文件上传配置servlet:multipart:max-file-size:10MBmax-request-size:10MBweb:resources:static-locations:/upload/代码packagecom.haoyang.Controller;importorg.springframework.web.bind.a......
  • SpringBoot+Mybatis-Plus+EasyExcel
    首先建立一个springboot项目,导入依赖<!--MyBatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version......
  • http代理常见错误代码表
    代码指示2xx成功200正常;请求已完成。201正常;紧接POST命令。202正常;已接受用于处理,但处理尚未完成。203正常;部分信息——返回的信息只是一部分。204正常;无响应——已接收请求,但不存在要回送的信息。3xx重定向301已移动——请求的数据具有新的位置且更改是永久的。302已找到——请求......
  • 阿里云1+X云计算开发与运维实战—— 使用负载均衡实现https与http的混合访问
    实验概述    互联网巨头雅虎官方对外发布消息,承认在2014年的一次黑客袭击中,至少5亿用户的数据信息遭窃。此次事件让我们再次意识到网站安全的重要性,网站加密防护的必要性。我们可以使用HTTPS协议对网站进行全站加密,但是,大部分用户已经习惯直接输入域名(即使用 HTTP 协议)访问网......
  • 体验下 slint ui (https://slint-ui.com/)
    先总结下结论:这个框架目前功能还不完善,但是想法真是挺好的,如果路线不错,将来还是有希望的。slint-ui是Qt前员工搞出来的一个新的ui,用rust写的,目前支持使用rust/c++/javascipt开发。ui使用了一个新的语言,这个语言很像QML,描述控件的功能都可以完成,但是复杂的action还得用开发语言来......
  • django-restful:购物车 学习记录
    购物车就有获取购物车详情加入购物车删除购物记录同样直接使用mixins中的就够了view这里面没有一个陌生的基本都是前面学习过了的classShoppingCartViewset(viewsets.ModelViewSet):"""购物车功能list:获取购物车详情create:......