调用第三方接口:springBoot整合forest

Forest是什么?

Forest是一个高层的、极简轻量级 HTTP调用API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,比Feign更轻量,是封装调用第三方restful api client接口的好帮手。

相比于直接使用Httpclient我们不再写一大堆重复的代码了,而是像调用本地方法一样去发送HTTP请求。

springboot整合forst

1、pom.xml中引入依赖

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

2、配置文件yml,添加forest的相关配置

forest:max-connections: 1000        # 连接池最大连接数connect-timeout: 3000        # 连接超时时间,单位为毫秒read-timeout: 3000           # 数据读取超时时间,单位为毫秒

3、建一个Interface

比如命名为MyClient,并创建一个接口方法名为helloForest,用@Get注解修饰之。

public interface MyClient {@Get("http://localhost:8080/hello")String helloForest();}

通过@Get注解,将上面的MyClient接口中的helloForest()方法绑定了一个 HTTP 请求, 其 URL 为http://localhost:8080/hello ,并默认使用GET方式,且将请求响应的数据以String的方式返回给调用者。

4、扫描接口 

友情提示:1.5.1以后版本可以跳过此步,不需要 @ForestScan 注解来指定扫描的包范围

若您已有定义好的 Forest 请求接口(比如名为 com.yoursite.client.MyClient),那就可以开始愉快使用它了。

只要在Springboot的配置类或者启动类上加上@ForestScan注解,并在basePackages属性里填上远程接口的所在的包名

@SpringBootApplication
@Configuration
@ForestScan(basePackages = "com.yoursite.client")
public class MyApp {...
}

Forest 会扫描@ForestScan注解中basePackages属性指定的包下面所有的接口,然后会将符合条件的接口进行动态代理并注入到 Spring 的上下文中。

5、发送请求

然后便能在其他代码中从 Spring 上下文注入接口实例,然后如调用普通接口那样调用即可

@Component
public class MyService {// 注入自定义的 Forest 接口实例@Resourceprivate MyClient myClient;public void testClient() {// 调用自定义的 Forest 接口方法// 等价于发送 HTTP 请求,请求地址和参数即为 helloForest 方法上注解所标识的内容String result = myClient.helloForest();// result 即为 HTTP 请求响应后返回的字符串类型数据System.out.println(result);}}

详情可查看forest的官方文档:🎁 新手介绍 | Forest (dtflyx.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音视频关键词批量采集工具|无水印视频爬虫提取软件

抖音视频关键词批量采集工具&#xff1a; 我们很高兴地介绍最新推出的抖音视频关键词批量采集工具&#xff0c;该工具集成了多项强大功能&#xff0c;让您轻松实现视频内容的批量提取和下载。以下是详细的功能解析和操作说明&#xff1a; 主要功能&#xff1a; 关键词批量提取…

数据库与缓存一致性如何保证

最近建了一个技术交流群&#xff0c;欢迎志同道合的同学加入&#xff0c;群里主要讨论&#xff1a;分享业务解决方案、深度分析面试题并解答工作中遇到的问题&#xff0c;同时也能为我提供写作的素材。 欢迎加Q&#xff1a;312519302&#xff0c;进群讨论 前言 在工作中&#…

锦城软件定义网络实验(只用于教学,第八周结束后自行删除)

一、实验环境简介&#xff1a; Ubuntu 20.0.4 Ryu/Opendaylightmininetsflow(网络监视技术)Apifox/postman(REST API流表控制工具) 二、软件定义网络知识图谱 三、SDN知识概述 1.SDN的三个主要特征&#xff1a; 网络开放可编程&#xff1b; 控制平面与数据平面分离…

云架构(二) 大使模式

Ambassador pattern &#xff08;https://learn.microsoft.com/en-us/azure/architecture/patterns/ambassador&#xff09; 简单描述 创建一个助手服务&#xff0c;这个服务代表消费服务或者应用程序发送网络请求。大使服务可以看做是与客户机同一个位置的进程外代理。 这种…

Web CSS笔记2

目录 1、背景 ①、背景图片(image) ②、背景平铺&#xff08;repeat&#xff09; ③、背景位置(position) ④、背景附着&#xff08;attachment&#xff09; ⑤、背景透明(CSS3) ⑥、背景图片缩放大小&#xff08;size&#xff09;&#xff1a; ⑦、背景简写 2、标签显…

java智慧工地源码 大型建筑公司应用的智慧工地系统源码 智慧工地建筑管理系统源码

java智慧工地源码 大型建筑公司应用的智慧工地系统源码 智慧工地建筑管理系统源码 智慧工地是智慧地球理念在工程领域的具体体现&#xff0c;它代表了一种全新的工程全生命周期管理理念。通过运用信息化手段&#xff0c;智慧工地能够精确设计和模拟工程项目&#xff0c;实现互…

低空经济:大疆创新、纵横股份的突围与成长

近期&#xff0c;“德国无人机初创公司Wingcopter试点无人机和电动货运自行车的联合运输项目”的消息在网上引起热议。网友在惊叹海外无人机技术取得了较大的突破和进步的同时&#xff0c;不忘对比自家无人机技术。 其实&#xff0c;国内早就实现无人机运载货物&#xff0c;只不…

【高危漏洞】关于视频分片上传的漏洞修复

修改文件crmeb/app/services/system/attachment/SystemAttachmentServices.php 增加下方代码&#xff0c;将分片上传的第几片强制转成INT类型解决 $data[chunkNumber] (int)$data[chunkNumber];

linux命令-ln命令详解

文章目录 前言一、ln命令介绍1. 简介2. 硬链接2.1 inode介绍 3. 软连接&#xff08;符号链接&#xff09;4. 语法5. 选项和参数 二、示例用法1. 创建硬链接2. 创建软链接2.1 给文件创建软链接2.2 给目录创建软链接 总结 前言 本文介绍了ln命令的用法和特点&#xff0c;包括硬链…

请简述一下Play框架的主要特点和优势是什么?你能解释一下Play框架中的MVC模式是如何工作的吗?

请简述一下Play框架的主要特点和优势是什么&#xff1f; Play框架是一个基于Java和Scala的轻量级Web开发框架&#xff0c;它以其高效、简洁和灵活的特点受到了广大开发者的青睐。以下是Play框架的主要特点和优势&#xff1a; 主要特点&#xff1a; 轻量级与模块化&#xff1a…

【TypeScript】解决字面量类型推断错误的四种方式

解决字面量类型推断错误的四种方式 方式一&#xff1a;对象属性使用类型断言方式二&#xff1a;传参使用类型断言方式三&#xff1a;对象使用类型断言方式四&#xff1a;对象属性使用变量&#xff0c;变量使用字面量类型参考 declare function handleRequest(url: string, meth…

Play框架如何处理请求和响应?能否详细描述一下处理流程?在Play框架中,你如何进行路由配置?

Play框架如何处理请求和响应&#xff1f;能否详细描述一下处理流程&#xff1f; Play框架处理请求和响应的流程相当直接且高效&#xff0c;它遵循了MVC&#xff08;Model-View-Controller&#xff09;的设计模式&#xff0c;将应用程序的不同部分进行了清晰的划分。以下是对Pla…

[蓝桥杯 2022 省 A] 求和

[蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和&#xff0c;即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a 1 ⋅ a n a 2 ⋅ a 3 ⋯ a n − 2 ⋅ a n − 1 a n − 2 ⋅ a…

linux 网卡配置 vlan/bond/bridge/macvlan/ipvlan 模式

linux 网卡模式 linux网卡支持非vlan模式、vlan模式、bond模式、bridge模式&#xff0c;macvlan模式、ipvlan模式等&#xff0c;下面介绍交换机端及服务器端配置示例。 前置要求&#xff1a; 准备一台物理交换机&#xff0c;以 H3C S5130 三层交换机为例准备一台物理服务器&…

Hive在虚拟机中的部署

安装Mysql数据库 # 更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 # 安装Mysql yum库 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm # yum安装Mysql yum -y install mysql-community-server # 启动Mysql设置开机启动…

【工具类】git log 常用别名,git log 干活,git log常用参数

git log 常用参数及 .gitconfig 配置 git log 常用参数及 .gitconfig 配置 干货&#xff0c;执行下边命令&#xff0c;添加别名git log 参数参考资料 干货&#xff0c;执行下边命令&#xff0c;添加别名 注意&#xff0c;需要将 knowledgebao 修改为自己的名字&#xff0c;…

AD域---共享文件夹-容量配额管理

域环境共享文件夹-容量配额管理 要求 1/李斯用户配额10G云盘空间&#xff0c;张珊用户配额30G云盘空间 2/D:\ 配额-启用配额-启用配额管理-拒绝将磁盘空间给超过配额限制的用户-勾选 3/将磁盘空间限制为:55GB&#xff0c;将警告等级设为50GB 4/选择该卷的配额记录选项-勾选…

道可云元宇宙每日资讯|上海以web3.0为主攻方向打造元宇宙高地

道可云元宇宙每日简报&#xff08;2024年3月26日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 江苏无锡设立5000万元算力券资金 近日&#xff0c;无锡市算力赋能人工智能产业发展暨算力应用政策发布会召开&#xff0c;《关于加快推进算力发展和应用的实施意见》…

12 mybatis 动态sql2

文章目录 user.sqlpom.xmlmybatis-config.xmllogback.xmlUserMapper.xmlUserMapper.javaUserMapperTest.java user.sql create table user (user_id int auto_incrementprimary key,user_name varchar(50) not null,password_hash varchar(…

大型集团公司企业文化知识竞活动赛策划方案

一场高端企业文化知识竞赛活动完整策划书&#xff0c;按诗词大会舞美标准进行设计&#xff0c;竞赛规则新颖&#xff0c;值得收藏。 天纵高端知识竞赛服务商&#xff0c;20多年现场经验和软硬件开发。 专业承办全国高端知识竞赛活动。线上线下各类竞赛活动均可执行&#xff0c;…