일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- F
- a
- Abstract Factory
- 추상팩토리패턴
- 추상 팩토리
- 빌터패턴
- ㅓ
- Functional Programming
- Kotlin
- 팩토리 메소드
- designPattern
- ㅋㅁ
- El
- Observer Pattern
- r
- 싱글톤
- 함수형프로그래밍
- 코틀린
- Design Pattern
- 디자인패턴
- PrototypePattern
- 프로토타입 패턴
- 옵저버 패턴
- 디자인패턴 #
- factory method
- builderPattern
- Singleton
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Ktor(client) 본문
client 객체 생성
- parmeter로 engine 전달.
- parmeter로 전달하지 않는다면, 클라이언트는 빌드 스크립트에 추가된 artifact에 따라 자동으로 엔진을 선택됨.
import io.ktor.client.*
import io.ktor.client.engine.cio.*
val client = HttpClient(CIO)
Configure the client(클라이언트 구성하기)
기본구성
- HttpClientConfig 클래스는 클라이언트를 구성하기 위한 기본 클래스
- expectSuccess 속성을 사용하여 응답 유효성 검사를 활성화 가능함
import io.ktor.client.*
import io.ktor.client.engine.cio.*
val client = HttpClient(CIO) {
expectSuccess = true
}
엔진 구성
import io.ktor.client.*
import io.ktor.client.engine.cio.*
val client = HttpClient(CIO) {
engine {
// Configure an engine
}
}
플러그인
- 클라이언트 구성 블록 내부의 install 함수에 플러그인을 전달
- Logging 플러그인을 설치하여 HTTP 호출을 기록 가능하다.
Logger 및 Logger level 정의
val client = HttpClient(CIO) {
install(Logging) {
logger = Logger.DEFAULT
level = LogLevel.HEADERS
}
}
*특정 플러그인에는 모듈/프로젝트에 별도의 종속성이 필요할 수 도 있다.
Use the client
필요한 모든 종속성을 추가하고 클라이언트를 만든 후에는 이를 사용하여 request 보내고 response을 받을 수 있다.
Close the client
HTTP 클라이언트 작업을 마친 후에는 Thread, connection, 코루틴용 CoroutineScope 등의 리소스를 해제해야 합니다.
HttpClient.close 함수를 호출
close()
- 새 request 생성을 금지하지만, 현재 활성 request을 종료하지 않습니다.
- 리소스는 모든 클라이언트 요청이 완료된 후에만 해제됨
a single request에 대해 HttpClient를 사용해야 하는 경우, 코드 블록을 실행한 후 자동으로 close를 호출하는 use 함수를 이용.
val status = HttpClient().use { client ->
// ...
}
* HttpClient를 만드는 것은 저렴한 작업이 아니며 여러 요청의 경우 인스턴스를 재사용하는 것이 좋습니다
'Ktor > Client' 카테고리의 다른 글
Ktor Retrying failed requests (0) | 2022.07.19 |
---|---|
Ktor User agent (0) | 2022.07.19 |
Ktor requests (0) | 2022.07.19 |
ktor(client Engines) (0) | 2022.07.15 |
Ktor(Creating a client) (0) | 2022.07.13 |