[kotlin] Ktor 클라이언트 라이브러리를 이용한 HTTP 요청 보내기

Kotlin의 Ktor 라이브러리는 손쉽게 HTTP 클라이언트를 작성하고 사용할 수 있는 간편한 방법을 제공합니다. 이 블로그 포스트에서는 Ktor의 클라이언트 라이브러리를 활용하여 HTTP 요청을 보내는 방법에 대해 알아보겠습니다.

1. Ktor 종속성 추가

먼저 프로젝트의 Gradle 또는 Maven 파일에 Ktor 클라이언트 종속성을 추가해야 합니다.

Gradle을 사용하는 경우:

dependencies {
    implementation "io.ktor:ktor-client-core:$ktor_version"
    implementation "io.ktor:ktor-client-cio:$ktor_version" // 원하는 클라이언트 엔진 선택
}

Maven을 사용하는 경우:

<dependencies>
    <dependency>
        <groupId>io.ktor</groupId>
        <artifactId>ktor-client-core</artifactId>
        <version>${ktor_version}</version>
    </dependency>
    <dependency>
        <groupId>io.ktor</groupId>
        <artifactId>ktor-client-cio</artifactId>
        <version>${ktor_version}</version>
    </dependency>
</dependencies>

2. HTTP 요청 보내기

다음은 Ktor 클라이언트를 사용하여 간단한 GET 요청을 보내는 예제 코드입니다.

import io.ktor.client.*
import io.ktor.client.request.*

suspend fun main() {
    val client = HttpClient()
    val response = client.get<String>("https://api.example.com/data")
    println("Response: $response")
    client.close()
}

위 예제에서는 HttpClient를 생성하고, client.get 메서드를 사용하여 원격 서버에서 데이터를 가져오고 있습니다.

3. 요청 설정하기

Ktor 클라이언트는 다양한 옵션을 제공하여 요청을 설정할 수 있습니다. 예를 들어, 요청 헤더를 추가하거나 요청 본문을 설정하는 등의 작업이 가능합니다.

import io.ktor.client.request.*
import io.ktor.http.*

suspend fun main() {
    val client = HttpClient()
    val response = client.get<String> {
        url("https://api.example.com/data")
        header(HttpHeaders.Authorization, "Bearer token")
    }
    println("Response: $response")
    client.close()
}

위 예제에서는 client.get 메서드의 람다 블록을 사용하여 URL과 요청 헤더를 설정하고 있습니다.

Ktor 클라이언트 라이브러리를 사용하여 HTTP 요청을 보내는 방법에 대해 간단히 살펴보았습니다. Ktor는 고성능이며 가독성이 뛰어난 방식으로 HTTP 클라이언트를 작성할 수 있도록 도와줍니다.

더 많은 정보는 Ktor 공식 문서를 참고하시기 바랍니다.