告別繁瑣配置!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.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 注意事項

官方說了:對于絕大部分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 的深度集成,它簡化了分布式系統間的服務調用,提供了豐富的功能和靈活的配置選項。

趕快去試試吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/96535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/96535.shtml
英文地址,請注明出處:http://en.pswp.cn/web/96535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

60_基于深度學習的羊群計數統計系統(yolo11、yolov8、yolov5+UI界面+Python項目源碼+模型+標注好的數據集)

目錄 項目介紹&#x1f3af; 功能展示&#x1f31f; 一、環境安裝&#x1f386; 環境配置說明&#x1f4d8; 安裝指南說明&#x1f3a5; 環境安裝教學視頻 &#x1f31f; 二、數據集介紹&#x1f31f; 三、系統環境&#xff08;框架/依賴庫&#xff09;說明&#x1f9f1; 系統環…

代理服務器是什么?怎么選擇?

代理服務器是一種位于用戶設備與目標網絡之間的中間服務器&#xff0c;通過接收用戶請求、轉發至目標網絡并將結果返回給用戶&#xff0c;實現“用戶→代理服務器→目標網絡”的間接訪問。其核心功能圍繞“網絡優化”“訪問控制”與“身份隱藏”展開&#xff0c;為個人與企業用…

代碼隨想錄刷題Day56

子集 這道題求子集&#xff0c;集合的基本運算之一&#xff0c;按照高中數學學習集合的知識&#xff0c;可以把這個找冪集的過程按照元素的個數來劃分步驟。也就是先找零個元素的子集&#xff0c;再找一個元素的子集&#xff0c;再找兩個元素的子集...一直到找N個元素的集合為…

pycharm——關于Pyqt5

PyQt5新手教程&#xff08;七萬字&#xff09; import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton, QLabel, QInputDialog, QColorDialog, QFontDialog, QFileDialog, QProgressDialog, QMessageBox from PyQt5.QtCore i…

P2678 [NOIP 2015 提高組] 跳石頭

P2678 [NOIP 2015 提高組] 跳石頭 判斷條件該怎么寫

小麥矩陣系統:一鍵批量發,多賬號同步不掉鏈

隨著互聯網的發展和社交平臺的普及&#xff0c;企業和個人用戶越來越依賴社交媒體平臺來進行信息傳播、品牌宣傳以及市場推廣。在這個信息高速流動的時代&#xff0c;如何更高效地管理多個社交平臺的賬號&#xff0c;并保持信息的同步與流暢傳播&#xff0c;成為了許多企業面臨…

JavaScript經典面試題二(函數和作用域)

目錄 一、閉包&#xff0c;使用場景 1.閉包的定義 2.閉包的實現原理 3.閉包的應用場景 &#xff08;1&#xff09;數據封裝與私有變量 &#xff08;2&#xff09;函數柯里化 &#xff08;3&#xff09;事件處理與回調 &#xff08;4&#xff09;模塊化開發 4.注意事項 …

Linux防火墻iptables

目錄 一&#xff0c;Iptables概述 二&#xff0c;iptables組成 1&#xff0c;表 2&#xff0c;鏈 3&#xff0c;鏈表對應關系 4&#xff0c;數據包過濾的匹配流程 5&#xff0c;規則匹配策略 三&#xff0c;iptables防火墻配置 1&#xff0c;iptables命令 2&#xff…

[優選算法專題二——NO.16最小覆蓋子串]

題目鏈接 LeetCode最小覆蓋子串 題目描述 代碼編寫 、關鍵注意點 僅統計目標相關字符&#xff1a;通過 hash1.count(in) 判斷字符是否在 t 中&#xff0c;避免無關字符&#xff08;如 s 中的 D、E&#xff09;干擾統計&#xff0c;提升效率。count 的更新時機&#xff1a;僅當…

考研408計算機網絡近年第34題真題解析(2021-2024.34)

&#xff08;2021.34&#xff09;此題已明確為差分曼徹斯特編碼&#xff0c;通常第一個時間間隙可能不太好判斷&#xff0c;因為0&#xff0c;或1可以變化&#xff0c;但差分曼徹斯特編碼的其它位置可以判斷&#xff0c;圖中黃色數字的時間間隙位置&#xff0c;開始位置和前面一…

微信小程序開發教程(八)

目錄&#xff1a;1.全局配置-tabBar2.小程序的頁面配置3.數據請求-GET和POST請求4.數據請求-request請求的注意事項1.全局配置-tabBar注意tabar頁面必須放到Page頭部位置2.小程序的頁面配置3.數據請求-GET和POST請求4.數據請求-request請求的注意事項

日語學習-日語知識點小記-構建基礎-JLPT-N3階段(29):文法運用第9回3+(考え方11)

日語學習-日語知識點小記-構建基礎-JLPT-N3階段&#xff08;31&#xff09;&#xff1a;文法運用第9回31、前言&#xff08;1&#xff09;情況說明&#xff08;2&#xff09;工程師的信仰2、知識點1ー 復習&#xff12;ー 單詞訓練3、單詞&#xff08;1&#xff09;日語單詞  …

小鵬汽車在 VLA(視覺 - 語言 - 動作)算法模型框架細節與原理

小鵬汽車的 VLA&#xff08;視覺 - 語言 - 動作&#xff09;算法模型框架是其端到端自動駕駛系統的核心&#xff0c;融合了多模態感知、語言推理與動作生成能力。以下是其技術細節與原理的深度解析&#xff1a; 一、整體架構&#xff1a;混合式端到端設計 小鵬 VLA 采用云端基座…

京東商品詳情 API 全解析:合規對接與 B2C 場景實戰指南

在 B2C 電商運營中&#xff0c;商品詳情數據是支撐店鋪管理、庫存調控、營銷決策的核心基礎。京東商品詳情 API 作為官方合規的數據獲取通道&#xff0c;不僅能穩定返回商品標題、價格、庫存等關鍵信息&#xff0c;還針對 B2C 場景新增了預售鎖庫、次日達標識等特色字段。本文從…

【Visual Studio 2017 和 2019下載】

Visual Studio 2017 和 2019下載VS2017下載地址&#xff1a;VS2019下載地址&#xff1a;VS2017下載地址&#xff1a; Visual Studio 2017 Community 鏈接 Visual Studio 2017 Enterprise 鏈接 VS2019下載地址&#xff1a; Visual Studio 2019 Community 鏈接 Visual Studio …

Python 輕松實現替換或修改 PDF 文字

在日常開發或文檔處理過程中&#xff0c;經常會遇到需要對 PDF 文檔中的文字進行修改的場景。例如更新合同條款、修正報表數據&#xff0c;或者批量替換文件中的特定內容。由于 PDF 格式以固定排版為特點&#xff0c;直接修改文字不像 Word 那樣直觀&#xff0c;因此需要借助專…

CI/CD流水線優化實戰:從30分鐘到5分鐘的效能革命

關鍵詞:CI/CD優化、GitHub Actions、Jenkins、自動化部署、流水線加速 一、引言:CI/CD流水線為何需要優化? 在現代軟件開發中,CI/CD(持續集成/持續交付)已成為DevOps實踐的核心環節。然而,許多團隊的流水線存在效率低下問題,??平均構建時間超過30分鐘??,嚴重制約…

神經網絡矩陣的點乘與叉乘概述

點乘點乘&#xff1a;兩個矩陣對應位置元素相乘&#xff08;逐元素級 element - wise&#xff09;實現方式&#xff1a;可通過 * 和 torch.mul(x, y) 函數實現&#xff08;含廣播機制&#xff09;模型符號&#xff1a;一個圓圈中間加一個實心點叉乘叉乘&#xff1a;傳統線性代數…

PHP學習(第三天)

網站訪問流程 一、靜態網站訪問流程&#xff08;如 index.html&#xff09;1. 流程是怎么樣的&#xff1f; 靜態網站的頁面內容固定&#xff0c;不需要服務器做額外計算&#xff0c;直接把文件返回給瀏覽器。訪問流程大致如下&#xff1a;用戶輸入網址或點擊鏈接 用戶在 個人設…

【辦公自動化】如何使用Python腳本自動化處理音頻?

在日常辦公和內容創作中&#xff0c;音頻處理是一項常見需求。無論是處理會議錄音、制作播客、編輯音樂背景&#xff0c;還是進行語音識別&#xff0c;Python都能幫助我們高效地完成這些任務。本文將介紹如何使用Python實現音頻處理自動化&#xff0c;包括格式轉換、音頻拼接、…