Skip to content

建立用戶端應用程式

建立用戶端應用程式

Ktor 包含一個多平台非同步 HTTP client,這讓你可以

發送請求
了解如何發送請求並指定各種請求參數:請求 URL、HTTP 方法、標頭及請求主體。
處理回應
了解如何接收回應、取得回應主體以及獲取回應參數。
, 並透過
外掛程式
了解如何使用用戶端外掛程式來加入常用功能,例如記錄、序列化和授權。
擴充其功能,例如
身分驗證
Auth 外掛程式在你的用戶端應用程式中處理身份驗證與授權。
JSON 序列化
ContentNegotiation 外掛程式有兩個主要目的:在用戶端與伺服器之間協商媒體類型,以及在傳送請求與接收回應時,以特定格式序列化/反序列化內容。
等。

在本教學中,我們將向你展示如何建立第一個 Ktor 用戶端應用程式,該程式會傳送請求並列印出回應。

前置需求

在開始本教學之前,請先 安裝 IntelliJ IDEA Community 或 Ultimate

建立新專案

你可以在現有專案中手動

建立與配置
了解如何建立與配置 Ktor 用戶端。
Ktor Client,然而,從頭開始最方便的方式是使用 IntelliJ IDEA 內建的 Kotlin 外掛程式產生一個新專案。

若要建立新的 Kotlin 專案,請 開啟 IntelliJ IDEA 並遵循以下步驟:

  1. 在歡迎畫面中,點擊 New Project

    或者,從主選單中選擇 File | New | Project

  2. New Project 精靈中,從左側選單選擇 Kotlin

  3. 在右側面板,指定以下設定:

    IntelliJ IDEA 中的新 Kotlin 專案視窗
    • Name :指定專案名稱。

    • Location :指定專案的目錄。

    • Build system :確保已選擇 Gradle

    • Gradle DSL :選擇 Kotlin

    • Add sample code :選擇此選項以在產生的專案中包含範例程式碼。

  4. 點擊 Create 並等待 IntelliJ IDEA 產生專案並安裝相依性。

加入相依性

讓我們加入 Ktor 用戶端所需的相依性。

  1. 開啟 gradle.properties 檔案並加入以下行以指定 Ktor 版本:

    kotlin

    NOTE

    若要使用 EAP 版本的 Ktor,你需要加入 Space 儲存庫

  2. 開啟 build.gradle.kts 檔案並將以下構件加入到 dependencies 區塊中:

    kotlin
    • ktor-client-core 是一個核心相依性,提供了主要的用戶端功能。
    • ktor-client-cio 是處理網路請求之
      引擎
      了解處理網路請求的引擎。
      的相依性。
  3. 點擊 build.gradle.kts 檔案右上角的 Load Gradle Changes 圖示,以安裝新加入的相依性。

    載入 Gradle 變更

建立用戶端

若要加入用戶端實作,請導覽至 src/main/kotlin 並遵循以下步驟:

  1. 開啟 Main.kt 檔案並將現有程式碼替換為以下實作:

    kotlin

    在 Ktor 中,用戶端由 HttpClient 類別表示。

  2. 使用 HttpClient.get() 方法來

    發送一個 GET 請求
    了解如何發送請求並指定各種請求參數:請求 URL、HTTP 方法、標頭及請求主體。
    回應
    了解如何接收回應、取得回應主體以及獲取回應參數。
    將以 HttpResponse 類別物件的形式接收。

    kotlin

    加入上述程式碼後,IDE 會針對 get() 函式顯示以下錯誤: Suspend function 'get' should be called only from a coroutine or another suspend function (暫停函式 'get' 應僅從協同程式或其他暫停函式中呼叫)。

    暫停函式錯誤

    若要修正此問題,你需要將 main() 函式設為暫停函式。

    TIP

    若要進一步了解呼叫 suspend 函式,請參閱 協同程式基礎
  3. 在 IntelliJ IDEA 中,點擊定義旁邊的紅色燈泡圖示,然後選擇 Make main suspend

    將 main 改為 suspend
  4. 使用 println() 函式來列印伺服器傳回的狀態碼,並使用 close() 函式來關閉串流並釋放與其相關的所有資源。 Main.kt 檔案內容應如下所示:

    kotlin

執行你的應用程式

若要執行你的應用程式,請導覽至 Main.kt 檔案並遵循以下步驟:

  1. 在 IntelliJ IDEA 中,點擊 main() 函式旁邊的裝訂邊圖示,然後選擇 Run 'MainKt'

    執行應用程式
  2. 等待 IntelliJ IDEA 執行應用程式。
  3. 你將在 IDE 底部的 Run 面板中看到顯示的輸出。

    伺服器回應

    雖然伺服器回應了 200 OK 訊息, 你也會看到一條錯誤訊息,指出 SLF4J 未能找到 StaticLoggerBinder 類別,並預設為無操作 (NOP) 記錄器實作。這實際上表示記錄功能已被停用。

    你現在已經有一個可運作的用戶端應用程式。然而,為了修正此警告並能夠透過記錄功能偵錯 HTTP 呼叫,還需要額外的步驟

啟用記錄

因為 Ktor 在 JVM 上使用 SLF4J 抽象層進行記錄,若要啟用記錄,你需要 提供一個記錄架構,例如 Logback

  1. gradle.properties 檔案中,指定記錄架構的版本:

    kotlin
  2. 開啟 build.gradle.kts 檔案並將以下構件加入到 dependencies 區塊中:

    kotlin
  3. 點擊 Load Gradle Changes 圖示以安裝新加入的相依性。
  4. 在 IntelliJ IDEA 中,點擊重新執行按鈕(IntelliJ IDEA 重新執行圖示)以重新啟動應用程式。

  5. 你應該不再看到該錯誤,而是在 IDE 底部的 Run 面板中顯示相同的 200 OK 訊息。

    伺服器回應

    至此,你已經啟用了記錄功能。若要開始看到記錄內容,你需要加入記錄配置。

  6. 導覽至 src/main/resources 並建立一個新的 logback.xml 檔案,內容實作如下:

    xml
  7. 在 IntelliJ IDEA 中,點擊重新執行按鈕(IntelliJ IDEA 重新執行圖示)以重新啟動應用程式。

  8. 你現在應該能夠在 Run 面板中看到列印出的回應上方出現追蹤(trace)記錄:

    伺服器回應

TIP

Ktor 透過
Logging
所需相依性:io.ktor:ktor-client-logging
外掛程式提供了一種簡單直覺的方式來為 HTTP 呼叫加入記錄,而加入配置檔案則讓你在複雜的應用程式中精確調整記錄行為。

後續步驟

為了更深入理解並擴充此配置,請探索如何

建立與配置 Ktor 用戶端
了解如何建立與配置 Ktor 用戶端。