Kotlin Ktorral

1. Áttekintés

A Ktor egy keretrendszer az aszinkron szerverek és kliensek felépítéséhez összekapcsolt rendszerekben a hatékony Kotlin programozási nyelv használatával. Ez megkönnyíti a beágyazott szerverekkel ellátott önálló alkalmazás fejlesztését.

Ebben az oktatóanyagban azt vizsgáljuk, hogyan hozhatunk létre önálló kiszolgálóalkalmazást a Ktor segítségével.

2. Ktor alkalmazás beállítása

Kezdjük a Ktor projekt felállításával. Majd használjuk Gradle amely az ajánlott és könnyen használható megközelítés. A Gradle telepítéséhez kövesse az oldalon található utasításokat Gradle webhely.

Hozza létre a épít.gradle fájl:

csoport 'com.baeldung.kotlin' verzió '1.0-SNAPSHOT' buildscript {ext.kotlin_version = '1.2.40' ext.ktor_version = '0.9.2' adattárak {mavenCentral ()} függőségek {classpath "org.jetbrains.kotlin: kotlin-gradle-plugin: $ kotlin_version "}} plugin alkalmazása: 'java' plugin alkalmazása: 'kotlin' plugin alkalmazása: 'application' mainClassName = 'APIServer.kt' sourceCompatibility = 1.8 compileKotlin {kotlinOptions.jvmTarget =" 1.8 "} compileTestKotlin {kotlinOptions.jvmTarget = "1.8"} kotlin {kísérleti {coroutines "enable"}} adattárak {mavenCentral () jcenter () maven {url "//dl.bintray.com/kotlin/ktor"}} függőségek {fordítás "io .ktor: ktor-server-netty: $ ktor_version "compile" ch.qos.logback: logback-classic: 1.2.1 "testCompile group: 'junit', név: 'junit', verzió: '4.12'}

Importáltuk a Ktor-t és a Ktor netty szerver csomagot. A Netty a beágyazott szerver, amelyet ebben a példában fogunk használni.

3. A szerver felépítése

Az alkalmazásunkat úgy hozzuk létre, hogy kódot adunk a forrásmappához src / main / kotlin.

Itt hozzuk létre a fájlt APIServer.kt a fő módszerrel:

fun main (args: Array) {} 

Ezután létrehozzuk és elindítjuk a beágyazott Netty szervert:

embeddedServer (Netty, 8080) {} .start (várjon = igaz) 

Létrehozza és elindítja a kiszolgálót a porton 8080. Beállítottuk várjon = igaz ban,-ben Rajt() módszer a kapcsolatok meghallgatására.

4. Az API felépítése

Adjuk hozzá az API-t. A HTTP kérések kezeléséhez Ktor biztosítja a útvonalválasztás funkció.

Aktiváljuk a Útválasztási funkció egy valamivel telepítés blokk, ahol meghatározhatjuk az útvonalakat meghatározott útvonalakhoz és HTTP módszerekhez:

val jsonResponse = "" "{" id ": 1," task ":" Fizetni vízszámlát "," description ":" Fizetni vízszámlát ma "," "" "embeddedServer (Netty, 8080) {install (Routing) {get ("/ todo") {call.respondText (jsonResponse, ContentType.Application.Json)}}} .start (várakozás = igaz)

Ebben a példában a szerver kezeli a KAP kérelem az ösvényre /csinálni és a-val válaszol csinálni JSON objektum. A funkciók telepítéséről a szakaszban tudhat meg többet A szolgáltatások telepítése.

5. A szerver futtatása

A szerver futtatásához szükségünk van egy futtatási feladatra a Gradle-ben:

feladat runServer (típus: JavaExec) {main = 'APIServer' classpath = sourceSets.main.runtimeClasspath} 

A szerver indításához ezt a feladatot hívjuk meg:

./gradlew runServer 

Az Out API ezután keresztül érhető el // localhost: 8080 / todo.

6. A szolgáltatások telepítése

A Ktor alkalmazás jellemzően egy sor funkcióból áll. Gondolhatnánk a funkciókra, mint olyan funkcionalitásra, amelyet a kérelem és a válasz folyamatába injektálunk.

Használni a DefaultHeaders funkcióval fejléceket adhatunk minden kimenő válaszhoz. útvonalválasztás egy másik szolgáltatás, amely lehetővé teszi számunkra, hogy meghatározzunk útvonalakat a kérések stb. kezelésére.

Fejleszthetjük és telepíthetjük a szolgáltatásainkat is.

Vessünk egy pillantást úgy, hogy minden kéréshez hozzáadunk egy egyéni fejlécet a DefaultHeaders funkció:

install (DefaultHeaders) {header ("X-Developer", "Baeldung")}

Hasonlóképpen felülírhatjuk a Ktor keretrendszer által beállított alapértelmezett fejléceket is:

install (DefaultHeaders) {fejléc (HttpHeaders.Server, "Saját szerver")}

Az elérhető alapértelmezett fejlécek listája megtalálható az osztályban io.ktor.features.DefaultHeaders.

7. A JSON kiszolgálása

A szigorított JSON manuális elkészítése nem könnyű. A Ktor szolgáltatást nyújt az adatobjektumok JSON-ként történő kiszolgálására a Gson segítségével.

Tegyük hozzá a Gson-függőséget épít.gradle:

fordítsd le az "io.ktor: ktor-gson: $ ktor_version"

Például egy adatobjektumot használunk a névvel Szerző:

adatosztály Szerző (val név: karakterlánc, val webhely: karakterlánc)

Ezután telepítjük a gson funkció:

telepítés (ContentNegotiation) {gson {setPrettyPrinting ()}}

Végül adjunk hozzá egy útvonalat a kiszolgálóhoz, amely egy szerzőobjektumot JSON néven szolgál ki:

get ("/ author") {val author = Szerző ("baeldung", "baeldung.com") call.respond (szerző)}

A szerző API a szerző adatobjektumot fogja kiszolgálni JSON.

8. Vezérlők hozzáadása

Hozzunk létre egy TODO alkalmazást, amely lehetővé teszi a felhasználó számára a TODO elemek hozzáadását, törlését, megtekintését és felsorolását.

Kezdjük a Csinálni adatosztály:

ToDo adatosztály (var id: Int, val név: String, val leírás: String, val befejezve: logikai érték) 

Ezután létrehozunk egy Tömb lista hogy többször tartsam Csinálni elemek:

val toDoList = ArrayList (); 

Ezután hozzáadjuk a vezérlőket a POST, DELETE és GET kérések kezeléséhez:

routing () {route ("/ todo") {post {var toDo = call.receive (); toDo.id = toDoList.size; toDoList.add (toDo); call.respond ("Hozzáadva")} delete ("/ {id}") {call.respond (toDoList.removeAt (call.parameters ["id"] !!. toInt ())); } get ("/ {id}") {call.respond (toDoList [call.parameters ["id"] !!. toInt ()]); } get {call.respond (toDoList); }}}

Hozzáadtuk a csinálniútvonal majd hozzárendelte a különböző HTTP igék kérését ahhoz a végponthoz.

9. Következtetés

Ebben a cikkben megtanultuk, hogyan hozhatunk létre Kotlin szerveralkalmazást a Ktor keretrendszerrel.

Néhány perc alatt elkészítettünk egy kis kiszolgálóalkalmazást, anélkül, hogy bármilyen kazánlap kódot használnánk.

Mint mindig, a kódminták megtalálhatók a GitHubon.