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
的深度集成,它簡化了分布式系統間的服務調用,提供了豐富的功能和靈活的配置選項。
趕快去試試吧!