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