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

关注我的公众号:【编程朝花夕拾】,可获取首发内容。

01 引言

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

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

GitHub地址:github.com/LianjiaTech...

Gitee地址:gitee.com/lianjiatech...

02 依赖

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

xml 复制代码
<dependency>
    <groupId>com.github.lianjiatech</groupId>
    <artifactId>retrofit-spring-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

03 最佳实践

3.1 基础配置

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

java 复制代码
@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 客户端测试

java 复制代码
 @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 请求重试

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

properties 复制代码
# 重试次数
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 日志打印

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

properties 复制代码
# 打印Header日志
retrofit.global-log.log-strategy=headers

日志策略:

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

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

05 小结

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

赶快去试试吧!

相关推荐
二月夜3 小时前
剖析Java正则表达式回溯问题
java·正则表达式
xuhaoyu_cpp_java3 小时前
项目学习(三)分页查询
java·经验分享·笔记·学习
程序员二叉4 小时前
【Java】集合面试全套精讲|HashMap/ArrayList高频考点完整版
java·面试·哈希算法
cfm_29144 小时前
JVM GC垃圾回收初步了解
java·开发语言·jvm
心之伊始4 小时前
LangChain4j RAG 实战:Java 后端如何把本地文档接入 Embedding 检索链路
java·架构·源码分析·csdn
许彰午5 小时前
17_synchronized关键字深度解析
java·开发语言
阿正的梦工坊5 小时前
【Rust】02-变量、不可变性与基础类型
开发语言·后端·rust
Xzh04236 小时前
AI Agent 学习路线(Java 后端方向)
java·人工智能·学习
我叫黑大帅6 小时前
通过php 中的Route:: 的写法了解什么是静态类调用
后端·面试·php
JS菌6 小时前
AI Agent 沙箱双层防护体系:从权限过滤到内核隔离的完整实现
前端·人工智能·后端