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

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