レスポンスの検証

Estimated reading time: 1 minute

HTTP レスポンスを検証し、エンジンやパイプラインからの変換例外を捕捉する機能を提供しています。

This feature is defined in the class io.ktor.client.features.HttpCallValidator and no additional artifacts are required.

設定

レスポンス検証機能の設定では、 validateResponsehandleResponseException メソッドを使用します。

HttpResponseValidator {
    validateResponse { response: HttpResponse ->
        // ...
    }

    handleResponseException { cause: Throwable ->
        // ...
    }
}

この機能は複数個設定することができます。 すべてのバリデータとハンドラは保持され、定義された順番で呼び出されます。

成功の期待

ExpectSuccess 機能は、レスポンスのバリデーションを利用して実装されます。

HttpResponseValidator {
    validateResponse { response ->
        val statusCode = response.status.value
        when (statusCode) {
            in 300..399 -> throw RedirectResponseException(response)
            in 400..499 -> throw ClientRequestException(response)
            in 500..599 -> throw ServerResponseException(response)
        }

        if (statusCode >= 600) {
            throw ResponseException(response)
        }
    }
}

この機能はデフォルトでインストールされていますが、クライアントの設定で無効化することができます。

val client = HttpClient() {
    expectSuccess = false
}