[Ktor] 1. 클라이언트, Engine
Ktor Client 가이드 요약 정리
- Ktor Documents
- 기준 버전:
1.6.2
- 시리즈
Engine
Ktor HTTP 클라이언트는 JVM, Android, JS, Native(iOS/desktop)과 같이 다른 플랫폼에서 사용될 수 있다. 특정 플랫폼에서 네트워크 요청을 처리하기 위해 특정 engine이 필요할 수도 있다. 예를 들어, Android에서는 OkHttp
를 사용하고 JVM에서는 Apache
나 CIO
를 사용할 수 있다.
ktor-client-core
라이브러리 외에 각 플랫폼에서 사용할 engine에 대한 디펜던시는 별도로 추가해줘야 한다. Engine dependency 가이드에서 플랫폼 별 사용 가능한 engine과 디펜던시를 확인할 수 있다.
클라이언트 생성
HttpClient
인스턴스를 생성하여 클라이언트를 만든다.
engine을 파라미터로 넘기는 방식
- 인스턴스 생성
val client = HttpClient(CIO)
- [참고]
HttpClient
생성자 fun HttpClient(engine: HttpClientEngine, block: HttpClientConfig<*>.() -> Unit): HttpClient
engine 생략 방식
engine을 생략한 경우, Default engine이 자동 선택된다.
- 인스턴스 생성
val client = HttpClient(CIO)
- [참고]
HttpClient
생성자 fun HttpClient(block: HttpClientConfig<*>.() -> Unit = {}): HttpClient
클라이언트 Configuration
생성자에 추가 파라미터를 전달하여 설정할 수 있다. HttpClientEngineConfig 클래스가 클라이언트 속성 설정의 베이스 클래스이고, HttpClientConfig 클래스에서 확장하여 더 많은 속성 설정을 제공하고 있다.
val client = HttpClient(CIO) {
// 이 block을 클라이언트 configuration block이라고 한다.
expectSuccess = false
// expectSuccess: status code가 성공이 아니면(code >= 300), HttpClient.receivePipeline 종료 옵션
}
engine의 속성은 engine
함수를 이용하여 설정한다.
val client = HttpClient(CIO) {
engine {
// Configure an engine
}
}
Plugins
Logging, Authorization Serialization 등과 같은 추가 기능을 제공한다.
클라이언트 configuration block 안에서 install
함수를 이용해 플러그인을 가져온다.
- 예시 - 로깅 기능 추가 (Logging plugin)
val client = HttpClient(CIO) {
install(Logging)
}
Comments