」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 SpringBoot 中向第三方 API 發出經過驗證的 HTTP POST 和 GET 請求

如何在 SpringBoot 中向第三方 API 發出經過驗證的 HTTP POST 和 GET 請求

發佈於2024-11-08
瀏覽:698

How to make authenticated HTTP POST and GET requests to third-party APIs in SpringBoot

介紹

Spring Boot 是一個強大的 Java 框架,它透過提供一套全面的工具和約定來簡化軟體開發流程。它的易用性和強大的功能使其成為小型和大型應用程式的流行選擇。在建立應用程式時,有時需要在應用程式中使用第三方 API。

在 Spring Boot 中向 API 發出請求的方法有很多種,包括使用 RestTemplate、WebSocket、Apache HttpClient、OkHttp 和 FeignClient。方法的選擇通常取決於應用程式的特定要求。在本文中,我們將重點介紹如何使用 RestTemplate 向第三方 API 發出經過驗證的 POST 和 GET 請求。

什麼是 RestTemplate?

RestTemplate 是 Spring 提供的同步客戶端,它提供了簡單直覺的 API 來傳送 HTTP 請求和處理回應。它是 Spring 中的一個套件,包含在 Spring Web 依賴項中。其方法易於理解,適合所有技能水平的開發人員使用。

如何發出經過身份驗證的 POST 請求

為了示範如何發出經過身份驗證的POST 請求,讓我們考慮一個場景,我們正在建立一個錢包應用程序,該應用程式需要透過第三方API 在https://api.example.com/create 建立帳戶。

要求:

API 需要以下內容:

  • 標頭:授權持有者
  • 正文參數:姓名、電子郵件、bvn

步驟

  1. 建立RestTemplate物件。
  2. 設定 HTTP 標頭:使用 HttpHeaders 建立一個攜帶授權令牌的標頭。
  3. 建立 HttpEntity:使用預期的請求正文和 HTTP 標頭建構 HttpEntity 物件。
  4. 發起POST請求:使用RestTemplate的postForObject方法傳送請求。

範例程式碼

String url = "https://api.example.com/create";

RestTemplate restTemplate = new RestTemplate();

HttpHeaders httpHeaders = new HttpHeaders();

httpHeaders.setBasicAuth(token);

HttpEntity httpEntity = new HttpEntity(requestBody, httpHeaders);

// Response from the API server
String responseObject = restTemplate.postForObject(url, httpEntity, String.class);

透過此設置,您可以成功向 API 發出 POST 請求,前提是令牌有效。

如何發出經過身份驗證的 GET 請求

為了發出經過驗證的 GET 請求,我們將使用 RestTemplate 中的交換方法。

範例程式碼

String url = "https://api.example.com/balance";

HttpHeaders httpHeaders = new HttpHeaders();

httpHeaders.setBasicAuth(token);

HttpEntity httpEntity = new HttpEntity(httpHeaders);

// Response from the API server
String responseObject = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class).getBody();

透過執行這些步驟,只要您的令牌有效,您將能夠向 API 發出 GET 請求。

結論

在本文中,我們介紹如何使用 SpringBoot 的 RestTemplate 向第三方 API 發出經過驗證的 POST 和 GET 請求。透過利用 RestTemplate,您可以輕鬆配置請求以包含必要的身份驗證標頭。

附加說明

  • 始終確保使用環境變數或加密設定檔安全儲存 API 金鑰和密碼等敏感資料。
  • 考慮探索其他選項,例如用於反應式程式設計的 WebClient 或用於更複雜應用程式中的聲明式 API 用戶端的 FeignClient。

關注我的社交帳號獲取更多文章:
點擊並關注

  • 領英
  • 嘰嘰喳喳
  • 開發
  • 中等的
版本聲明 本文轉載於:https://dev.to/iamsherif/how-to-make-authenticated-http-post-and-get-requests-in-springboot-ai7?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Python中何時用"try"而非"if"檢測變量值?
    Python中何時用"try"而非"if"檢測變量值?
    使用“ try“ vs.” if”來測試python 在python中的變量值,在某些情況下,您可能需要在處理之前檢查變量是否具有值。在使用“如果”或“ try”構建體之間決定。 “ if” constructs result = function() 如果結果: 對於結果: ...
    程式設計 發佈於2025-05-16
  • 在Pandas中如何將年份和季度列合併為一個週期列?
    在Pandas中如何將年份和季度列合併為一個週期列?
    pandas data frame thing commans date lay neal and pree pree'和pree pree pree”,季度 2000 q2 這個目標是通過組合“年度”和“季度”列來創建一個新列,以獲取以下結果: [python中的concate...
    程式設計 發佈於2025-05-16
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-05-16
  • 為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    為什麼PHP的DateTime :: Modify('+1個月')會產生意外的結果?
    使用php dateTime修改月份:發現預期的行為在使用PHP的DateTime類時,添加或減去幾個月可能並不總是會產生預期的結果。正如文檔所警告的那樣,“當心”這些操作的“不像看起來那樣直觀。 考慮文檔中給出的示例:這是內部發生的事情: 現在在3月3日添加另一個月,因為2月在2001年只有2...
    程式設計 發佈於2025-05-16
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-16
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-05-16
  • Go語言如何動態發現導出包類型?
    Go語言如何動態發現導出包類型?
    與反射軟件包中的有限類型的發現能力相反,本文探索了替代方法,探索了在Runruntime。 go import( “ FMT” “去/進口商” ) func main(){ pkg,err:= incorter.default()。導入(“ time”) 如果er...
    程式設計 發佈於2025-05-16
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 在位置2-3中:截斷\ uxxxxxxxx逃脫當CSV文件包含特殊字符或Unicode的路徑逃...
    程式設計 發佈於2025-05-16
  • C++成員函數指針正確傳遞方法
    C++成員函數指針正確傳遞方法
    如何將成員函數置於c 的函數時,接受成員函數指針的函數時,必須同時提供對象的指針,並提供指針和指針到函數。需要具有一定簽名的功能指針。要通過成員函數,您需要同時提供對象指針(此)和成員函數指針。這可以通過修改Menubutton :: SetButton()(如下所示:[&& && && &&華)...
    程式設計 發佈於2025-05-16
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-05-16
  • 將圖片浮動到底部右側並環繞文字的技巧
    將圖片浮動到底部右側並環繞文字的技巧
    在Web設計中圍繞在Web設計中,有時可以將圖像浮動到頁面右下角,從而使文本圍繞它纏繞。這可以在有效地展示圖像的同時創建一個吸引人的視覺效果。 css位置在右下角,使用css float and clear properties: img { 浮點:對; ...
    程式設計 發佈於2025-05-16
  • 如何有效地選擇熊貓數據框中的列?
    如何有效地選擇熊貓數據框中的列?
    在處理數據操作任務時,在Pandas DataFrames 中選擇列時,選擇特定列的必要條件是必要的。在Pandas中,選擇列的各種選項。 選項1:使用列名 如果已知列索引,請使用ILOC函數選擇它們。請注意,python索引基於零。 df1 = df.iloc [:,0:2]#使用索引0和1 ...
    程式設計 發佈於2025-05-16
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確預期操作結果的火災和...
    程式設計 發佈於2025-05-16
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中可能會遇到一個衝突,其中3派對軟件包將另一個帶有導入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    程式設計 發佈於2025-05-16

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3