告别繁琐配置!Retrofit-Spring-Boot-Starter让HTTP调用更优雅

不好意思,HttpClient 该换了!使用retrofit-spring-boot-starter 在分布式服务架构中,对不稳定的外部服务进行熔断降级是保证服务高可用的重要措施之一。由于外部服务的稳定性是不能保证的,当外部服务不稳定时,响应时间会变长。相应地,调用方的响应时间也会变长,线程会产生堆积,最终可能耗尽调用方的线程池,导致整个服务不可用。基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。 阅读详情

01 引言

之前分享过一篇文章【像调用接口一样调用第三方API】,今天迎来了新成员Retrofit。

retrofit-spring-boot-starter 是一个基于 Spring Boot 的 starter,它简化了 Retrofit 在 Spring 环境中的集成和使用。Retrofit 本身是一个类型安全的 HTTP 客户端库,而该 starter 让其能够无缝融入 Spring Boot 项目,提供自动配置、依赖注入等特性。

GitHub地址:https://github.com/LianjiaTech/retrofit-spring-boot-starter

Gitee地址:https://gitee.com/lianjiatech/retrofit-spring-boot-starter

02 依赖

本文采用的是retrofit-spring-boot-starter 3.2.0,SpringBoot的版本影响着依赖的引入。

<dependency>
    <groupId>com.github.lianjiatech</groupId>
    <artifactId>retrofit-spring-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

03 最佳实践

3.1 基础配置

接口必须使用@RetrofitClient注解标记!

@RetrofitClient(baseUrl = "http://shanhe.kim/api/")
public interface ShanheRetrofitClient {

    @GET("za/xingzuo.php")
    String getXingZuo(@Query("msg") String xinZuo);

    @GET("za/phonegj.php")
    String phoneGj(@Query("phone") String phone);

    @GET("qq/xiongji.php")
    String qqxiongJi(@Query("qq") String qq);

    @GET("wz/ymgj.php")
    String domainGj(@Query("url") String url);
}

这里需要说明的是baseUrl必须以/结尾,否则可能会出现接口404,是因为接口地址被截断了,官方专门做了说明,小编也踩坑了。

3.2 客户端测试

 @Autowired
private ShanheRetrofitClient shanheRetrofitClient;

@Test
void retrofitClientTest() {
    String xingZuo = shanheRetrofitClient.getXingZuo("双鱼");
    System.out.println("星座:" + xingZuo);
    System.out.println("--------------------------------");

    String phoneGj = shanheRetrofitClient.phoneGj("15268595589");
    System.out.println("手机估值:" + phoneGj);
    System.out.println("---------------------------------");

    String qqxiongJi = shanheRetrofitClient.qqxiongJi("585984585");
    System.out.println("QQ吉凶:" + qqxiongJi);
    System.out.println("--------------------------------");

    String domainGj = shanheRetrofitClient.domainGj("baidu.com");
    System.out.println("域名估值:" + domainGj);
}

测试结果都是OK的。

3.3 注意事项

官方说了:对于绝大部分Spring-Boot项目,引入依赖即可使用。如果引入依赖之后,组件无法正常工作,可尝试如下方案解决。

小编这里没有任何的配置,就值了直接调用成功。

默认情况下,自动使用SpringBoot扫描路径进行RetrofitClient注册,可以在配置类加上@RetrofitScan手动指定扫描路径。

3.4 Http请求相关注解

详细可以参考官方文档:Retrofit官方文档

04 功能扩展

官方提供了很多扩展功能:

这里挑两个小编比较感兴趣的说明一下。

4.1 请求重试

请求重试是接口可用性的的一节指标,可以防止网络抖动等。只需要简单的配置,就可以完成。

# 重试次数
retrofit.global-retry.max-retries=2
# 开启重试:默认fasle
retrofit.global-retry.enable=true
# 重试间隔
retrofit.global-retry.interval-ms=2000
# 重试规则
retrofit.global-retry.retry-rules[0]=response_status_not_2xx

我们将接口路径改成不可访问的,看看结果:

4.2 日志打印

框架可以提供日志的颗粒度打印

# 打印Header日志
retrofit.global-log.log-strategy=headers

日志策略:

我们可以看到打印了Header的日志:

其他的功能大家可以自行试试。

05 小结

retrofit-spring-boot-starter 3.x 提供了现代化、生产就绪的 HTTP 客户端解决方案。通过与 Spring Boot 3.x 的深度集成,它简化了分布式系统间的服务调用,提供了丰富的功能和灵活的配置选项。

赶快去试试吧!

retrofit-spring-boot-starter:用于改进的springboot启动器,并支持许多功能增强,从而大大简化了开发。(实现了Retrofit与spring-boot框架快速整合,并支持了众多功能增强,极大简化了开发) 改装弹簧启动启动器 Retrofit是适用于Android和Java类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了retrofit-spring-boot-starter 。 retrofit-spring-boot-starter实现了Retrofit与spring-boot框架快速整合,并支持了众多功能增强,极大简化了开发。 :rocket:项目持续优化迭代,欢迎大家提ISSUE和PR!麻烦大家能给一颗star :sparkles: ,您的star是我们持续更新的动力! github项目地址: : gitee项目地址: ://gitee.com/lianjiatech/retrofit-spring-boot-starter 示例演示: : 感谢@ismart-yuxi为本项目写的示例demo 功能特性 快速使用 约会依赖 < dependency> < groupId>com. 立即下载

相关推荐

从噪声中提取真相:LabVIEW振动信号积分处理的降噪艺术

本文深入探讨了LabVIEW在振动信号积分处理中的降噪技术,揭示了如何通过选择性频率加权从噪声中提取关键故障特征。详细介绍了时域和频域积分方法的实现原理及优化策略,并结合工业案例展示了多轴信号联合降噪的实际应用效果,为设备状态监测提供了高效解决方案。

weixin_29164185的博客 304

优雅的HTTP客户端框架retrofit-spring-boot-starter

retrofit-spring-boot-starter 是一个用于整合 Retrofit 库和 Spring Boot 的 starter 项目。使用它可以简化在 Spring Boot 中使用 Retrofit 的配置和使用。

zc_huiyanruju的博客 1902

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1943

Springboot 配置 Retrofit 并使用各种请求方式

Retrofit 这个东西是简化我们在 java 代码里面书写 http 请求的工具,支持 restful 风格的请求,我们通常发送请求,要用到 hutools 和 httpUtil 这些东西,要写好多行,现在用 Retrofit 只需要两三行。retrofit是对okhttp的封装源码先给你们:retrofit-demo Gradle 这个工具尚不成熟,最好紧跟版本,使用最新版这个路径是用书写 retrofit 请求方法的文件的包路径,2.3.8版本及以后就可以不加了,也能扫描到 2.项目解析 结构

泡泡的博客 8186

用Spirent Test Center测试交换机Head of Line(HOL)Blocking

测试目的:设备执行拥塞控制,使非阻塞端口不受阻塞端口影响 预设条件:在RFC2889里按以下步骤设置,端口1和端口3同时向端口4发送数据包,端口1向端口2发送数据包 测试步骤:运行设置好的RFC2889 测试结果:所有frame size都显示没有Head of Line(HOL),即非阻塞端口不受阻塞端口所影响 ...

Yuna_的博客 1358

TruckSim与Simulink联合仿真中的车轮转角精确控制策略

本文深入探讨了TruckSim与Simulink联合仿真中实现车轮转角精确控制的关键策略。针对多轴车辆路径跟踪时转角指令失灵的常见问题,核心在于正确配置TruckSim转向轴的外部输入模式(Advanced Settings),并确保仿真接口的稳定搭建。文章详细解析了从单轴到多轴协同转向的配置方法,并提供了提升MPC路径跟踪精度的实战技巧与调试经验。

weixin_29035147的博客 368

【亲测免费】 探索高效HTTP调用:retrofit-spring-boot-starter全面解析

Gitee项目地址:[https://gitee.com/lianjiatech/retrofit-spring-boot-starter](https://gitee.com/lianjiatech/retrofit-spring-boot-starter) 示例demo:[https://github.com/ismart-yuxi/retrofit-spring-boot-demo](ht...

gitblog_00430的博客 1436

Redmi K30 5G刷 LineageOS17.1

前言 买手机前就观望了Xdr论坛,看Redmi K30 5G有LineageOS17.1的Rom并且还挺热,应该还不错,就入手了。晚上就刷机了。买了小米就是为了折腾,为发烧而生。 在开始前还请先安装adb工具,因为我自己是做Android开发的,自带adb,不会安装的可以百度“Android安装adb工具”。还有下载刷机文件:百度云 密码:2a0f 刷机的系统是刚买来的低版本,没有升级过Rom,如果高版本慎刷。 还有这个Rom是5G版本的,4G版本的不要刷。 建议没有刷过机器的最好不要尝试,变砖后果自负。

u010436867的博客 1万+

retrofit-spring-boot-starter这款轻量级 HTTP 神器好用到爆

Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而是使用最广泛的Java开发框架,但是Retrofit官方没有支持与框架快速整合,因此我们开发了。实现了Retrofit与框架快速整合,并且支持了诸多功能增强,极大简化开发。接口必须使用注解标记!http相关注解可参考官方文档:retrofit官方文档。通常情况下,通过注解属性动态创建对象能够满足大部分使用场景。但是在某些情况下,用户可能需要自定义。

BUG指挥课堂 944

SD-WAN组网案例——数据中心

SD-WAN组网案例——数据中心

2301_78457663的博客 706

《备考系统架构设计师》 - 专栏介绍和目录

本专栏包括所有历年真题及详解、章节知识核心总结、精选高分论文、补充知识、专题总结等。欢迎订阅专栏。

数据知道的博客 4万+

springboot使用retrofit-spring-boot-starter

https://mp.weixin.qq.com/s/rnhXFUEFRBA0xDzB85fk0A 项目地址:https://github.com/LianjiaTech/retrofit-spring-boot-starter

文盲青年的博客 4070

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3252

Springboot-Retrofit HTTP工具框架快速使用

Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了retrofit-spring-boot-starter。retrofit-spring-boot-starter实现了Retrofit与spring-boot框架快速整合,并且支持了诸多功能增强,极大简化开发。

weixin_44831330的博客 1740

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【亲测免费】 使用Retrofit-Spring-Boot-Starter提升你的Java RESTful API开发效率

[![](https://img.shields.io/maven-central/v/com.lianjia/retrofit-spring-boot-starter)](https://mvnrepository.com/artifact/com.lianjia/retrofit-spring-boot-starter) 在现代Web应用开发中,对接RESTful API是常见的任务。则是R...

gitblog_00007的博客 1267

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【开源项目】Springboot整合Retrofit入门及源码分析

【开源项目】Springboot整合Retrofit入门及源码分析

秋装什么的博客 418

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【亲测免费】 retrofit-spring-boot-starter 常见问题解决方案

`retrofit-spring-boot-starter` 是一个为 Retrofit 提供的 Spring Boot Starter,支持快速集成和功能增强。该项目的主要编程语言是 Java,适用于 Spring Boot 项目,特别是那些需要进行 HTTP 调用的场景。通过该 Starter,开发者可以更方便地使用 Retrofit 进行 HTTP 请求,并且可以利用 Spring Boot...

gitblog_00263的博客 1316

Spring Boot 中的 RestTemplate不好用?试试 Retrofit !

*** 密钥key* 支持占位符形式配置。* @return*//*** 密钥* 支持占位符形式配置。* @return*//*** 拦截器匹配路径* @return*//*** 拦截器排除匹配,排除指定路径拦截* @return*//*** 处理该注解的拦截器类* 优先从spring容器获取对应的Bean,如果获取不到,则使用反射创建一个!

2401_84010702的博客 1243

Retrofit:使用【Retrofit】优雅地对接第三方接口

我是 ABin-阿斌:写一生代码,创一世佳话,筑一览芳华。 如果小伙伴们觉得我的文章不错,记得一键三连,感谢~ 文章目录前言 前言

欢迎来到 ABin-阿斌的博客:写一生代码,创一世佳话,筑一览芳华。 3450

retrofit-spring-boot-starter请求API

retrofit-spring-boot-starter使用 1 准备请求方法 @Slf4j @RestController @RequestMapping("/user") public class UserController { @GetMapping public List<User> getUser() { List<User> list = new ArrayList<>(); list.add(new User(1, "张三")); lis

qq_26786441的博客 2499

Retrofit Spring Boot Starter 使用教程

Retrofit Spring Boot Starter 使用教程 1. 项目的目录结构及介绍 retrofit-spring-boot-starter/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ └── resources/ │ └── test/ │ ├── java/ │ └── resources/ ├──...

gitblog_00190的博客 1168

Retrofit-Spring-Boot-Starter 完整使用指南

Retrofit-Spring-Boot-Starter是一个专为Retrofit设计的Spring Boot启动器,旨在简化Retrofit在Spring Boot应用中的集成过程,并提供额外的功能增强。该库支持快速配置OkHttpClient,包括注解拦截器、日志打印、请求重试、熔断降级以及错误解码等功能,是微服务架构中HTTP客户端调用的理想解决方案。 ## 环境要求与版本兼容性 - *

gitblog_00189的博客 816

一款 SpringBoot 项目下最优雅的 HTTP 客户端工具,真心强大!

大家好,我是宝哥! 大家都知道okhttp是一款由square公司开源的java版本http客户端工具。实际上,square公司还开源了基于okhttp进一步封装的retrofit工具,用来支持通过接口的方式发起http请求。如果你的项目中还在直接使用RestTemplate或者okhttp,或者基于它们封装的HttpUtils,那么你可以尝试使用Retrofit。retrofit-spring...

程序员闪充宝 1854

SpringBoot项目整合Retrofit最佳实践

大家都知道okhttp是一款由square公司开源的java版本http客户端工具。实际上,square公司还开源了基于okhttp进一步封装的retrofit工具,用来支持通过接口的方式发起http请求。如果你的项目中还在直接使用RestTemplate或者okhttp,或者基于它们封装的HttpUtils,那么你可以尝试使用Retrofit。 retrofit-spring-boot-starter实现了Retrofit与SpringBoot框架快速整合,并且支持了部分功能增强,从而极大的简化sprin

若明天不见 1万+

retrofit-spring-boot-starter核心功能全解析:从基础使用到高级特性

retrofit-spring-boot-starter是一款专为Retrofit打造的Spring Boot Starter,它支持快速集成Retrofit并提供丰富的功能增强,让开发者能够轻松构建高效的RESTful API客户端。无论是基础的接口定义还是高级的熔断降级、重试机制,这款工具都能满足你的需求。 ## 快速集成与自动配置 ### 一键依赖引入 只需在项目的pom.xml中添加

gitblog_07572的博客 404

还在用httpclient ?试试Retrofit 吧(附源码)

/ GET 请求// 路径参数// 查询参数// POST 请求// 异步请求@Bean@Primary.build();.build();// 获取认证令牌逻辑连接复用- OkHttp 连接池自动管理,避免频繁建立连接请求缓存- 智能缓存机制,减少不必要的网络请求压缩传输- 自动 GZIP 压缩,节省带宽异步支持- 原生异步调用,提升并发性能连接池优化。

longzhutengyue的博客 1176
上一篇: Java序列化陷阱揭秘:这5个错误80%的开发者都犯过
下一篇: 【工具库推荐】Java开发者必备:6款HTTP客户端神器,从经典到未来
智_永无止境
博客等级 码龄10年 803粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值