Skip to content

クライアントプラグイン

多くのアプリケーションでは、ロギングシリアライゼーション認可など、コアとなるアプリケーションロジックには含まれない共通の機能が必要になります。Ktorでは、これらの機能はクライアントのプラグインによって提供されます。

プラグインの依存関係を追加する

一部のプラグインでは、追加の依存関係が必要です。例えば、Loggingプラグインを使用するには、ビルドスクリプトにktor-client-loggingアーティファクトを追加する必要があります。

Kotlin
Groovy
XML

各プラグインのドキュメントに、必要な依存関係が記載されています。

プラグインをインストールする

プラグインをインストールするには、クライアント構成ブロック内のinstall()関数にプラグインを渡します。

例えば、Loggingプラグインのインストールは以下のようになります。

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.logging.*

val client = HttpClient(CIO) {
    install(Logging)
}

プラグインをインストールまたは置換する

共有のクライアント構成コードなどによって、プラグインが既にインストールされている場合があります。そのような場合、installOrReplace()関数を使用してその構成を置き換えることができます。

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*

val client = HttpClient(CIO) {
    installOrReplace(ContentNegotiation) {
        // ...
    }
}

この関数は、プラグインが存在しない場合はインストールし、既にインストールされている場合はその構成を置き換えます。

プラグインを構成する

ほとんどのプラグインは、installブロック内で設定可能な構成オプションを提供しています。

例えば、Loggingプラグインでは、ロガー、ログレベル、およびログメッセージをフィルタリングするための条件を指定できます。

kotlin
package com.example

import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.logging.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.*
import kotlinx.coroutines.runBlocking

fun main() {
    runBlocking {
        val client = HttpClient(CIO) {
            install(Logging) {
                logger = Logger.DEFAULT
                level = LogLevel.HEADERS
                filter { request ->
                    request.url.host.contains("ktor.io")
                }
                sanitizeHeader { header -> header == HttpHeaders.Authorization }
            }
        }

        val response1: HttpResponse = client.get("https://ktor.io/")
        val response2: HttpResponse = client.get("https://jetbrains.com/")
    }
}

カスタムプラグインを作成する

既存のプラグインでニーズを満たせない場合は、独自のカスタムクライアントプラグインを作成できます。カスタムプラグインを使用すると、リクエストとレスポンスをインターセプトし、再利用可能な動作を実装できます。

詳細については、カスタムクライアントプラグインを参照してください。