Skip to content

クライアントアプリケーションの作成

クライアントアプリケーションの作成

Ktor にはマルチプラットフォーム対応の非同期 HTTP クライアントが含まれており、これを使用することで

リクエストの送信
リクエストの作成方法と、リクエスト URL、HTTP メソッド、ヘッダー、リクエスト本文などのさまざまなリクエストパラメータの指定方法について学びます。
レスポンスの処理
レスポンスの受信、レスポンス本文の取得、レスポンスパラメータの取得方法について学びます。
を行うことができます。また、
プラグイン
ロギング、シリアル化、認可などの一般的な機能を追加するためのクライアントプラグインの使用方法を学びます。
を使用して、
認証
Auth プラグインは、クライアントアプリケーションでの認証と認可を処理します。
JSON シリアル化
ContentNegotiation プラグインは、主に 2 つの目的を果たします。クライアントとサーバー間でのメディアタイプのネゴシエーションと、リクエスト送信時およびレスポンス受信時に特定の形式でコンテンツをシリアル化/デシリアル化することです。
などの機能拡張も可能です。

このチュートリアルでは、リクエストを送信してレスポンスを出力する、最初の Ktor クライアントアプリケーションの作成方法を説明します。

前提条件

このチュートリアルを始める前に、IntelliJ IDEA Community または Ultimate をインストールしてください。

新規プロジェクトの作成

既存のプロジェクトに手動で Ktor クライアントを

作成および構成
Ktor クライアントの作成と構成方法について学びます。
することもできますが、ゼロから始める便利な方法は、IntelliJ IDEA に同梱されている Kotlin プラグインを使用して新しいプロジェクトを生成することです。

新しい Kotlin プロジェクトを作成するには、IntelliJ IDEA を開き、以下の手順に従います。

  1. ウェルカム画面で New Project をクリックします。

    または、メインメニューから File | New | Project を選択します。

  2. New Project ウィザードで、左側のリストから Kotlin を選択します。

  3. 右側のペインで、以下の設定を指定します。

    IntelliJ IDEA の New Kotlin project ウィンドウ
    • Name: プロジェクト名を指定します。

    • Location: プロジェクトのディレクトリを指定します。

    • Build system: Gradle が選択されていることを確認します。

    • Gradle DSL: Kotlin を選択します。

    • Add sample code: 生成されるプロジェクトにサンプルコードを含めるために、このオプションを選択します。

  4. Create をクリックし、IntelliJ IDEA がプロジェクトを生成して依存関係をインストールするまで待ちます。

依存関係の追加

Ktor クライアントに必要な依存関係を追加しましょう。

  1. gradle.properties ファイルを開き、Ktor のバージョンを指定するために次の行を追加します。

    kotlin

    NOTE

    Ktor の EAP バージョンを使用するには、Space リポジトリを追加する必要があります。

  2. build.gradle.kts ファイルを開き、dependencies ブロックに次のアーティファクトを追加します。

    kotlin
    • ktor-client-core は、メインのクライアント機能を提供するコア依存関係です。
    • ktor-client-cio は、ネットワークリクエストを処理する
      エンジン
      ネットワークリクエストを処理するエンジンについて学びます。
      のための依存関係です。
  3. build.gradle.kts ファイルの右上隅にある Load Gradle Changes アイコンをクリックして、新しく追加された依存関係をインストールします。

    Load Gradle Changes

クライアントの作成

クライアントの実装を追加するには、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 (Suspend 関数 'get' は、コルーチンまたは別の suspend 関数からのみ呼び出す必要があります)。

    Suspend 関数のエラー

    これを修正するには、main() 関数を suspend にする必要があります。

    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 ペイン内の出力されたレスポンスの上に、トレースログが表示されるはずです。

    サーバーのレスポンス

TIP

Ktor は、
Logging
必要な依存関係: io.ktor:ktor-client-logging
プラグインを通じて HTTP 呼び出しのログを追加するシンプルで直接的な方法を提供します。一方、構成ファイルを追加すると、複雑なアプリケーションでのロギングの動作を微調整できます。

次のステップ

この構成をより深く理解し拡張するために、

Ktor クライアントの作成と構成
Ktor クライアントの作成と構成方法について学びます。
方法を確認してください。