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

<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 注意事项

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

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

赶快去试试吧!

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]