Home KMM: Ktor client 설정
Post
Cancel

KMM: Ktor client 설정

Ktor-client

Http-client 라이브러리, kotlin & coroutine를 기반으로 구축되었으며 가볍고 강력한 비동기 통신을 지원한다.

본 글에서는 ktor-client 설정에 대하여 정리

2.0.0-beta 기준

Setup

HttpClient는 정의는 크게 아래 3가지 조합으로 이뤄진다.

HttpClientPlugin

ConfigPlugin이 분리되어있으며 install(PLUGIN, CONFIG initalizer) 를 통해 HttpClient에 적용 할 수 있다.

Plugin에서 install 및 prepare 함수를 구현하여 설정값(CONFIG)에 따라 interceptor등을 추가하여 원하는 동작을 구현한다.

HttpEngine

HttpEngine은 interface이며 각 플랫폼별 HttpEngine provider를 정의하여 사용하면 된다.

대표적으로 CIO, OkHttp, IOS 등이 있다.

Example in koin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
single {
  OkHttp.create() // HttpEngine
}

single {
  HttpClient(get()) {
    install(ContentNegotiation) {
      json()
    }

    install(Logging) {
      logger = object : Logger {
        override fun log(message: String) {
          localLogger.log(message)
        }
      }

      level = LogLevel.ALL
    }

    install(HttpTimeout) {
      val timeout = 30000L
      connectTimeoutMillis = timeout
      requestTimeoutMillis = timeout
      socketTimeoutMillis = timeout
    }
  }
}

Reference

Ktor: Build Asynchronous Servers and Clients in Kotlin

This post is licensed under CC BY 4.0 by the author.

Spring: JPA 테스트(더미) 데이터 설정

Spring: Security 인가설정 - Basic