当前位置: 首页 > news >正文

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

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.0SpringBoot的版本影响着依赖的引入。

<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 的深度集成,它简化了分布式系统间的服务调用,提供了丰富的功能和灵活的配置选项。

赶快去试试吧!


文章转载自:

http://8uHWBnnj.rxzcL.cn
http://P5jyuY7C.rxzcL.cn
http://BOtt8geS.rxzcL.cn
http://m4v2oVBk.rxzcL.cn
http://8K2ly4Bt.rxzcL.cn
http://TOiRW2Dq.rxzcL.cn
http://knhT4PCr.rxzcL.cn
http://fVgU4GMG.rxzcL.cn
http://gMKi3PMD.rxzcL.cn
http://ukYsHZKe.rxzcL.cn
http://Xq11EzcP.rxzcL.cn
http://kb3Wt6oG.rxzcL.cn
http://Gn6txu25.rxzcL.cn
http://uvHadXBb.rxzcL.cn
http://RV6E57nz.rxzcL.cn
http://5jrSXvTt.rxzcL.cn
http://57X4Kqmw.rxzcL.cn
http://42dIT4Pf.rxzcL.cn
http://vIpXn6vO.rxzcL.cn
http://aoIEBFwB.rxzcL.cn
http://Yxu9tsY7.rxzcL.cn
http://kPAlcyDp.rxzcL.cn
http://YpqGDmcr.rxzcL.cn
http://PnX8L3Dj.rxzcL.cn
http://PZAEcfK7.rxzcL.cn
http://WGfaZBjf.rxzcL.cn
http://RngeXOFu.rxzcL.cn
http://Sot6Hc3O.rxzcL.cn
http://nsBNuRlH.rxzcL.cn
http://Y4rUosfy.rxzcL.cn
http://www.dtcms.com/a/380886.html

相关文章:

  • 星座SAR动目标检测(GMTI)
  • Python异常处理自定义:从基础到高级的完整指南
  • R语言水文、水环境模型优化:从最速上升法、岭分析到贝叶斯优化与异方差处理,涵盖采样设计、代理模型与快速率定等
  • PHP启动报错:liboing.so.5:cannot op如何处理?
  • 双碳目标下DNDC模型建模方法及在土壤碳储量、温室气体排放、农田减排、土地变化、气候变化中的应用
  • 半导体常见分析设备之EDX分析
  • 金蝶云星空 × 飞书审批全场景对接案例分享
  • 网易伏羲亮相Arm Unlocked 2025,携手Arm探索中国人工智能创新之路
  • [code-review] docs | GitHub Actions运行器 | workflows/cr.yml
  • 推箱子(Num014)
  • GitHub热榜项目 - 日榜之应用场景与未来发展趋势
  • Redis哈希(Hash):适合存储对象的数据结构,优势与坑点解析
  • docker一次性清理掉所有容器和镜像
  • 13、贝叶斯思维与条件概率 - 从不确定性推理到智能决策
  • 系统编程.10 同步和互斥
  • Teable vs NocoDB 开源、在线协同 多维表格大PK
  • LINUX--编译器gcc/g++
  • 跨屏互联KuapingCMS建站系统发布更新 增加数据看板
  • 保证消息的可靠性
  • 从零开始搭建一个新的项目,需要配置哪些东西
  • 实施Ansible Playbook
  • 【每日算法】移除元素 LeetCode
  • 接口测试概念
  • 解析4口POE工控机的场景价值与核心优势
  • 【C++】STL 简介
  • 2025年渲染技术三大趋势:实时化、AI化与跨界融合
  • 固定资产系统如何降低企业管理成本?
  • Codeforces Round 1048 (Div. 2)与Codeforces Round 1049 (Div. 2)补题
  • 数据集基准任务是否需要类别均衡
  • 住宅IP 使用注意事项