クライアントプラグイン
多くのアプリケーションでは、ロギング、シリアライゼーション、認可など、コアとなるアプリケーションロジックには含まれない共通の機能が必要になります。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/")
}
}カスタムプラグインを作成する
既存のプラグインでニーズを満たせない場合は、独自のカスタムクライアントプラグインを作成できます。カスタムプラグインを使用すると、リクエストとレスポンスをインターセプトし、再利用可能な動作を実装できます。
詳細については、カスタムクライアントプラグインを参照してください。
