RestApi

Dáta sem, dáta tam.

Nástroje používateľa

Nástoje správy stránok


kotlin-ktor2

Ktor (v2)

Tento článok vychádza z pôvodnej dokumentácie Ktor a má za úlohu stručne zrekapitulovať možnosti frameworku Ktor, ktorý je určený pre tvorbu asynchrónnych aplikácií server a klient.

Pre generovanie projektu Ktor Server a Klient odporúčam využíť web generátor a pre Multiplatform priamo IDE IntelliJ IDEA, prípadne si nainštalovať nástroj Ktor CLI pre generovanie projektu. V Intellij IDEA Ultimate je korektne vygenerovaný Ktor projekt pomocou pluginu Ktor.

generovanie projektu na webe: Ktor Project Generator
generovanie projektu pluginom: plugin Ktor
Vytvorenie, otvorenie a spustenie nového projektu Ktor
inštalácie Ktor CLI:
brew update
brew install ktor
 
ktor new

Ktor Server

KTOR Server je framework na vytváranie backend aplikácií – teda aplikácií, ktoré prijímajú HTTP požiadavky (GET, POST, PUT, DELETE, …), spracujú ich a vrátia odpoveď (JSON, HTML, text, …). Server Ktor čaká, kým ho niekto osloví.

Používa sa napríklad na REST API, mikroservisy, webové aplikácie, autentifikačné služby a podobne.

najpoužívanejšie závisloti

gradle.properties
ktor_version=3.4.0
gradle/libs.versions.toml
[libraries]
ktor-server-status-pages = { module = "io.ktor:ktor-server-status-pages", version.ref = "ktor" }
build.gradle.kts :
val ktor_version: String by project
 
dependencies {
  implementation(libs.ktor.server.status.pages)
 
}

Ktor Klient

KTOR Klient je knižnica na posielanie HTTP požiadaviek iným serverom. Používa sa napríklad na volanie REST API, komunikáciu s externými službami, sťahovanie dát a podobne. Klient aktívne oslovuje server.

najpoužívanejšie závisloti

gradle.properties
ktor_version=3.4.0
gradle/libs.versions.toml
[libraries]
#...
build.gradle.kts :
val ktor_version: String by project
 
dependencies {
  implementation("io.ktor:ktor-client-core:$ktor_version")
  implementation("io.ktor:ktor-client-cio:$ktor_version")}

Kombinácia Ktor Server a Ktor Klient

V praxi je to veľmi časté použitie. Takáto aplikácia môže napríklad prijímať požiadavky od používateľov (funguje ako server) a zároveň volať iné API služby (funguje ako klient), teda spojiť odpovede a vrátiť výsledok.

Ak reálny príklad môže poslúžiť napríklad klientská mobilná appka ktorá zavolá vlastný Ktor Server, ktorý prijme požiadavku. Potom vo vlastnom backende Ktor Klient ju použije na zavolanie externého API (napríklad získanie informácií), ktoré spracuje a vráti klientskej mobilnej aplikácii.

Praktické využitie je napríklad v oblastiach: Mikroservisná architektúra, API Gateway, Backend-for-Frontend (BFF), Proxy server, Autentifikačné servery (napr. overenie tokenu voči inej službe) a podobne.

Pridanie závislostí pre tento prípad:
dependencies {
  implementation("io.ktor:ktor-server-core:...")
  implementation("io.ktor:ktor-client-core:...")
}
Praktický kód:
val httpClient = HttpClient()
 
// server - routing a get
routing {
    get("/data") {
        // klient - volenie a príjatie
        val externalResponse = httpClient.get("https://api.example.com/data")
        call.respond(externalResponse.bodyAsText())
    }
}

Doplnky projektov Ktor Server a Ktor Klient

  • HTTP
  • Security: Authentications, Sessions, …
  • Routing: Routing, Request Validation, Static Content, Status Pages, …
  • Monitoring
  • Serialization: Content Negotiation, kotlinx.serialization, GSON, Jackson
  • Templating: Thymeleaf, …
  • Databases: Exposed, Postgres, MongoDB, Kafka
  • Frameworks: Koin, Dependency Injection, Koog (AI), …
  • Sockets: Raw Sockets, Raw Secure SSL/TLS Sockets, WebSockets
  • Administration: Shutdown URL, …
kotlin-ktor2.txt · Posledná úprava: od attilajancik