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.