Skip to content

클라이언트 애플리케이션 생성

Ktor는 다중 플랫폼 비동기 HTTP 클라이언트를 포함하며, 이를 통해

요청을 생성하고
요청 URL, HTTP 메서드, 헤더, 요청 본문 등 다양한 요청 매개변수를 지정하고 요청을 생성하는 방법을 알아봅니다.
응답을 처리하며
응답을 받고, 응답 본문을 얻고, 응답 매개변수를 얻는 방법을 알아봅니다.
,
플러그인
로깅, 직렬화, 권한 부여 등 일반적인 기능을 제공하는 플러그인에 대해 알아봅니다.
(예:
인증
Auth 플러그인은 클라이언트 애플리케이션에서 인증 및 권한 부여를 처리합니다.
,
JSON 직렬화
ContentNegotiation 플러그인은 클라이언트와 서버 간 미디어 타입 협상, 요청 전송 및 응답 수신 시 특정 형식으로 콘텐츠 직렬화/역직렬화라는 두 가지 주요 목적을 제공합니다.
등)으로 기능을 확장할 수 있습니다.

이 튜토리얼에서는 요청을 보내고 응답을 출력하는 첫 번째 Ktor 클라이언트 애플리케이션을 생성하는 방법을 보여드립니다.

사전 요구 사항

이 튜토리얼을 시작하기 전에 IntelliJ IDEA Community 또는 Ultimate를 설치하세요.

새 프로젝트 생성

기존 프로젝트에서 Ktor 클라이언트를 수동으로

생성하고 구성
Ktor 클라이언트를 생성하고 구성하는 방법을 알아봅니다.
할 수 있습니다. 그러나 처음부터 시작하는 편리한 방법은 IntelliJ IDEA에 번들된 Kotlin 플러그인을 사용하여 새 프로젝트를 생성하는 것입니다.

새 Kotlin 프로젝트를 생성하려면 IntelliJ IDEA를 열고 다음 단계를 따르세요:

  1. 시작 화면에서 New Project를 클릭하세요.

    또는 주 메뉴에서 File | New | Project를 선택하세요.

  2. New Project 마법사에서 왼쪽 목록에서 Kotlin 을 선택하세요.

  3. 오른쪽 창에서 다음 설정을 지정하세요:

    New Kotlin project window in intelliJ IDEA
    • 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 파일을 열고 다음 아티팩트를 의존성 블록에 추가하세요:

    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 함수 'get'은 코루틴 또는 다른 suspend 함수에서만 호출되어야 합니다.

    Suspend function error

    이를 해결하려면 main() 함수를 suspend 함수로 만들어야 합니다.

    TIP

    suspend 함수 호출에 대한 자세한 내용은 코루틴 기본 사항을 참조하세요.
  3. IntelliJ IDEA에서 정의 옆의 빨간 전구를 클릭하고 Make main suspend 를 선택하세요.

    Make main suspend
  4. println() 함수를 사용하여 서버에서 반환된 상태 코드를 출력하고, close() 함수를 사용하여 스트림을 닫고 연결된 모든 리소스를 해제합니다. Main.kt 파일은 다음과 같아야 합니다:

    kotlin

애플리케이션 실행

애플리케이션을 실행하려면 Main.kt 파일로 이동하여 다음 단계를 따르세요:

  1. IntelliJ IDEA에서 main() 함수 옆의 거터 아이콘을 클릭하고 Run 'MainKt' 를 선택하세요.

    Run app
  2. IntelliJ IDEA가 애플리케이션을 실행할 때까지 기다리세요.
  3. IDE 하단의 Run 창에 출력이 표시됩니다.

    Server response

    서버가 200 OK 메시지로 응답하더라도, SLF4J가 StaticLoggerBinder 클래스를 찾지 못해 no-operation (NOP) 로거 구현으로 기본 설정되었다는 오류 메시지가 표시됩니다. 이는 로깅이 비활성화되었음을 의미합니다.

    이제 작동하는 클라이언트 애플리케이션이 있습니다. 그러나 이 경고를 수정하고 로깅을 통해 HTTP 호출을 디버그하려면 추가 단계가 필요합니다.

로깅 활성화

Ktor는 JVM 로깅을 위해 SLF4J 추상화 계층을 사용하므로, 로깅을 활성화하려면 로깅 프레임워크(예: Logback)를 제공해야 합니다.

  1. gradle.properties 파일에서 로깅 프레임워크의 버전을 지정하세요:

    kotlin
  2. build.gradle.kts 파일을 열고 다음 아티팩트를 의존성 블록에 추가하세요:

    kotlin
  3. Load Gradle Changes 아이콘을 클릭하여 새로 추가된 의존성을 설치하세요.
  4. IntelliJ IDEA에서 다시 실행 버튼(intelliJ IDEA rerun icon)을 클릭하여 애플리케이션을 다시 시작하세요.

  5. 더 이상 오류가 표시되지 않지만, IDE 하단의 Run 창에는 동일한 200 OK 메시지가 표시됩니다.

    Server response

    이로써 로깅을 활성화했습니다. 로그를 확인하려면 로깅 구성을 추가해야 합니다.

  6. src/main/resources 로 이동하여 다음 구현으로 새 logback.xml 파일을 생성하세요:

    xml
  7. IntelliJ IDEA에서 다시 실행 버튼(intelliJ IDEA rerun icon)을 클릭하여 애플리케이션을 다시 시작하세요.

  8. 이제 Run 창에서 출력된 응답 위에 트레이스 로그가 표시될 것입니다:

    Server response

TIP

Ktor는
로깅
필수 의존성: io.ktor:ktor-client-logging 코드 예시: tutorial-client-get-started
플러그인을 통해 HTTP 호출에 대한 로그를 추가하는 간단하고 직접적인 방법을 제공하는 반면, 구성 파일을 추가하면 복잡한 애플리케이션에서 로깅 동작을 세밀하게 조정할 수 있습니다.

다음 단계

이 구성을 더 잘 이해하고 확장하려면

Ktor 클라이언트를 생성하고 구성하는 방법
Ktor 클라이언트를 생성하고 구성하는 방법을 알아봅니다.
을 살펴보세요.