Ktor Client ๊ฐ์ด๋ ์์ฝ ์ ๋ฆฌ
๊ธฐ์ค ๋ฒ์ :
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)
}
'๊ฐ๋ฐ > Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Ktor] 3. Response (0) | 2021.08.04 |
---|---|
[Ktor] 2. Request (0) | 2021.08.04 |
[Kotlin In Action] 5. ๋๋ค๋ก ํ๋ก๊ทธ๋๋ฐ (1) | 2021.05.29 |
[Kotlin In Action] 4. ํด๋์ค, ๊ฐ์ฒด, ์ธํฐํ์ด์ค (0) | 2021.05.19 |
[Kotlin In Action] 3. ํจ์ ์ ์์ ํธ์ถ (0) | 2021.05.10 |