forest--声明式HTTP客户端框架-spring-b oot项目整合

2024-01-20 23:50

本文主要是介绍forest--声明式HTTP客户端框架-spring-b oot项目整合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Forest 是一个开源的 Java HTTP 客户端框架,它能够将 HTTP 的所有请求信息(包括 URL、Header 以及 Body 等信息)绑定到您自定义的 Interface 方法上,能够通过调用本地接口方法的方式发送 HTTP 请求。

官方链接:

🎁 新手介绍 | Forest

阿丹:

       在之前的技术栈中没有涉及到这里,但是在近期的项目中涉及到了http请求的调用。于是学习和使用了新的技术栈。

导入依赖

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

JOSN框架依赖

注意:如果项目中已经存在了json的框架使用那么不需要导入这个依赖

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.73</version>
</dependency>

XML框架依赖

  <dependency><groupId>com.dtflys.forest</groupId><artifactId>forest-jaxb</artifactId><version>1.5.33</version></dependency>

spring-boot环境下的简单使用

在上面的依赖导入好了以后就可以进行去构建http请求的接口调用了。

在 Forest 中,所有的 HTTP 请求信息都要绑定到某一个接口的方法上,不需要编写具体的代码去发送请求。请求发送方通过调用事先定义好 HTTP 请求信息的接口方法,自动去执行 HTTP 发送请求的过程,其具体发送请求信息就是该方法对应绑定的 HTTP 请求信息

阿丹:

        该说不说!这个方式是什么优雅简单!!!!

快速构建一个GET请求

1、创建一个接口

操作:

       使用@Get注解,并且在这个注解value值中写入url

解读一下:

        在前面的String说明了这个接口要返回一段字符串来

2、使用!!!你没看错就是直接使用!!!

 首先在需要使用的地方使用@Resource直接注入

然后使用的时候直接进行调用即可!!!

3、效果演示!

你别看返回了一个json,但是它其实还是一个字符串,只是使用了测试工具进行了美化。

这个一定要知道!!!

进阶使用!!!!

学习展示一下官方是实例

如何构建请求?

构建请求头

public interface MyClient {@Request(url = "http://localhost:8080/hello/user",headers = "Accept: text/plain")String sendRequest(@Query("uname") String username);
}

上面的sendRequest方法绑定的 HTTP 请求,定义了 URL 信息,以及把Accept:text/plain加到了请求头中, 方法的参数String username绑定了注解@Query("uname"),它的作用是将调用者传入入参 username 时,自动将username的值加入到 HTTP 的请求参数uname中。

请求方法

HTTP 请求方法请求注解描述
GET
@Get@GetRequest
获取资源
POST@Post@PostRequest
传输实体文本
PUT@Put@PutRequest
上传资源
HEAD@HeadRequest
获取报文首部
DELETE@Delete@DeleteRequest
删除资源
OPTIONS@Options@OptionsRequest询问支持的方法
TRACE@Trace@TraceRequest追踪路径
PATCH@Patch@PatchRequest
更新资源的某一部分
不定方法
@Request
可动态传入HTTP方法

其中在这个中使用的传递参数的方法是{value}的方式,同时在下面的形参中使用@Var注解的方式来赋值。

若不想在接口定义的时候直接定死为某个具体的 HTTP 请求方法,而是想从全局变量或方法参数中动态传入

可以使用 @Request 请求注解

/*** 通过在 @Request 注解的 type 属性中定义字符串模板* 在字符串模板中引用方法的参数*/
@Request(url = "http://localhost:8080/hello",type = "{type}"
)
String simpleRequest(@Var("type") String type);

在调用改方法时通过参数传入 HTTP 请求方法类型(字符串类型,大小写不敏感)

// POST 请求
String result1 = simpleRequest("post");
// DELETE 请求
String result2 = simpleRequest("DELETE");

更多操作看官网文档很详细

🍭 请求头 | Forest 

这篇关于forest--声明式HTTP客户端框架-spring-b oot项目整合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/627744

相关文章

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

Java中如何正确的停掉线程

《Java中如何正确的停掉线程》Java通过interrupt()通知线程停止而非强制,确保线程自主处理中断,避免数据损坏,线程池的shutdown()等待任务完成,shutdownNow()强制中断... 目录为什么不强制停止为什么 Java 不提供强制停止线程的能力呢?如何用interrupt停止线程s

SpringBoot请求参数传递与接收示例详解

《SpringBoot请求参数传递与接收示例详解》本文给大家介绍SpringBoot请求参数传递与接收示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录I. 基础参数传递i.查询参数(Query Parameters)ii.路径参数(Path Va

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱