클라이언트 애플리케이션 생성하기
클라이언트 애플리케이션 생성하기
코드 예제: tutorial-client-get-started
Ktor는 멀티플랫폼 비동기 HTTP 클라이언트를 포함하고 있어,
이 튜토리얼에서는 요청을 보내고 응답을 출력하는 첫 번째 Ktor 클라이언트 애플리케이션을 만드는 방법을 보여줍니다.
사전 준비 사항
이 튜토리얼을 시작하기 전에, IntelliJ IDEA Community 또는 Ultimate를 설치하세요.
새 프로젝트 생성하기
기존 프로젝트에서 Ktor 클라이언트를 수동으로
새 Kotlin 프로젝트를 생성하려면, IntelliJ IDEA를 열고 다음 단계를 따르세요:
시작 화면에서 New Project를 클릭합니다.
또는 메인 메뉴에서 File | New | Project를 선택합니다.
New Project 마법사의 왼쪽 목록에서 Kotlin을 선택합니다.
오른쪽 창에서 다음 설정을 지정합니다.

Name : 프로젝트 이름을 지정합니다.
Location : 프로젝트 디렉토리를 지정합니다.
Build system : Gradle이 선택되었는지 확인합니다.
Gradle DSL : Kotlin을 선택합니다.
Add sample code : 생성된 프로젝트에 샘플 코드를 포함하려면 이 옵션을 선택합니다.
Create를 클릭하고 IntelliJ IDEA가 프로젝트를 생성하고 의존성을 설치할 때까지 기다립니다.
의존성 추가하기
Ktor 클라이언트에 필요한 의존성을 추가해 보겠습니다.
gradle.properties 파일을 열고 Ktor 버전을 지정하기 위해 다음 줄을 추가합니다.
kotlinNOTE
Ktor의 EAP 버전을 사용하려면 Space 저장소(Space repository)를 추가해야 합니다.
build.gradle.kts 파일을 열고 dependencies 블록에 다음 아티팩트(artifact)들을 추가합니다.
kotlinktor-client-core는 핵심 클라이언트 기능을 제공하는 핵심 의존성입니다.ktor-client-cio는 네트워크 요청을 처리하는엔진(engine)에 대한 의존성입니다.네트워크 요청을 처리하는 엔진에 대해 알아봅니다.
build.gradle.kts 파일 오른쪽 상단에 있는 Load Gradle Changes 아이콘을 클릭하여 새로 추가된 의존성을 설치합니다.

클라이언트 생성하기
클라이언트 구현을 추가하려면 src/main/kotlin으로 이동하여 다음 단계를 따르세요.
Main.kt 파일을 열고 기존 코드를 다음 구현으로 교체합니다.
kotlinKtor에서 클라이언트는 HttpClient 클래스로 표현됩니다.
HttpClient.get()메서드를 사용하여GET 요청을 보냅니다.요청을 보내고 요청 URL, HTTP 메서드, 헤더 및 요청 본문과 같은 다양한 요청 매개변수를 지정하는 방법을 알아봅니다.응답(response)은응답을 받고, 응답 본문을 가져오고, 응답 매개변수를 얻는 방법을 알아봅니다.HttpResponse클래스 객체로 수신됩니다.kotlin위의 코드를 추가한 후, IDE는
get()함수에 대해 다음과 같은 에러를 표시합니다: Suspend function 'get' should be called only from a coroutine or another suspend function .
이를 해결하려면
main()함수를 중단 함수(suspending function)로 만들어야 합니다.IntelliJ IDEA에서 정의 옆의 빨간 전구를 클릭하고 Make main suspend를 선택합니다.

println()함수를 사용하여 서버에서 반환한 상태 코드(status code)를 출력하고,close()함수를 사용하여 스트림을 닫고 이와 관련된 모든 리소스를 해제합니다. Main.kt 파일은 다음과 같아야 합니다:kotlin
애플리케이션 실행하기
애플리케이션을 실행하려면 Main.kt 파일로 이동하여 다음 단계를 따르세요.
IntelliJ IDEA에서
main()함수 옆의 거터(gutter) 아이콘을 클릭하고 Run 'MainKt'를 선택합니다.
- IntelliJ IDEA가 애플리케이션을 실행할 때까지 기다립니다.
IDE 하단의 Run 창에 출력이 표시되는 것을 볼 수 있습니다.

서버가
200 OK메시지로 응답하지만, SLF4J가StaticLoggerBinder클래스를 찾는 데 실패하여 기본적으로 NOP(no-operation) 로거 구현을 사용한다는 에러 메시지도 표시될 것입니다. 이는 사실상 로깅이 비활성화되었음을 의미합니다.이제 작동하는 클라이언트 애플리케이션이 생성되었습니다. 하지만 이 경고를 해결하고 로깅을 통해 HTTP 호출을 디버깅하려면 추가 단계가 필요합니다.
로깅 활성화하기
Ktor는 JVM에서 로깅을 위해 SLF4J 추상화 레이어를 사용하므로, 로깅을 활성화하려면 Logback과 같은 로깅 프레임워크를 제공해야 합니다.
gradle.properties 파일에 로깅 프레임워크의 버전을 지정합니다.
kotlinbuild.gradle.kts 파일을 열고 dependencies 블록에 다음 아티팩트를 추가합니다.
kotlin- Load Gradle Changes 아이콘을 클릭하여 새로 추가된 의존성을 설치합니다.
IntelliJ IDEA에서 다시 실행 버튼(
)을 클릭하여 애플리케이션을 다시 시작합니다.
더 이상 에러가 표시되지 않아야 하며, IDE 하단의 Run 창에 동일한
200 OK메시지가 표시될 것입니다.
이제 로깅이 활성화되었습니다. 로그를 확인하려면 로깅 구성을 추가해야 합니다.
src/main/resources로 이동하여 다음 구현이 포함된 새로운 logback.xml 파일을 생성합니다.
xmlIntelliJ IDEA에서 다시 실행 버튼(
)을 클릭하여 애플리케이션을 다시 시작합니다.
이제 Run 창의 출력된 응답 위에 트레이스(trace) 로그가 표시되는 것을 볼 수 있습니다.

TIP
Ktor는