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

赶快去试试吧!

相关推荐
涡能增压发动积19 小时前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
云烟成雨TD19 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
Wenweno0o19 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨19 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132119 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
tyung19 小时前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald20 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川20 小时前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
一轮弯弯的明月20 小时前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得
chenjingming66620 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter