Jtti:怎麼構建非同步伺服器和客戶端的Kotlin框架Ktor

JttiSEO發表於2024-01-12

Ktor 是 JetBrains 開發的用於構建非同步伺服器和客戶端的 Kotlin 框架。它提供了一套強大而靈活的工具,適用於構建各種 Web 應用程式,包括 RESTful API、微服務和其他非同步應用。以下是使用 Ktor 構建非同步伺服器和客戶端的基本步驟:

構建非同步伺服器:

1. 新增依賴項:

在你的 Kotlin 專案中,使用 Gradle 或 Maven 新增 Ktor 依賴項。

使用 Gradle 的例子:

implementation "io.ktor:ktor-server-core:1.6.4"

implementation "io.ktor:ktor-server-netty:1.6.4"

2. 建立伺服器應用程式:

建立一個包含伺服器端應用程式的 Kotlin 檔案,例如 Server.kt

import io.ktor.application.*

import io.ktor.features.ContentNegotiation

import io.ktor.features.StatusPages

import io.ktor.http.ContentType

import io.ktor.http.HttpStatusCode

import io.ktor.jackson.jackson

import io.ktor.request.receive

import io.ktor.response.respond

import io.ktor.routing.*

import io.ktor.server.engine.embeddedServer

import io.ktor.server.netty.Netty


data class Message(val text: String)


fun Application.module() {

    install(ContentNegotiation) {

        jackson { }

    }


    install(StatusPages) {

        exception<Throwable> { cause ->

            call.respond(HttpStatusCode.InternalServerError, "Server error: $cause")

        }

    }


    routing {

        route("/api") {

            get("/hello") {

                call.respond(Message("Hello, Ktor!"))

            }


            post("/echo") {

                val message = call.receive<Message>()

                call.respond(message)

            }

        }

    }

}


fun main() {

    embeddedServer(Netty, port = 8080, module = Application::module).start(wait = true)

}

3. 執行伺服器:

執行你的伺服器應用程式。這個例子使用 Netty 作為伺服器引擎,監聽在本地的 8080 埠上。

構建非同步客戶端:

1. 新增依賴項:

在你的 Kotlin 專案中,使用 Gradle 或 Maven 新增 Ktor 客戶端依賴項。

使用 Gradle 的例子:

implementation "io.ktor:ktor-client-core:1.6.4"

implementation "io.ktor:ktor-client-json:1.6.4"

implementation "io.ktor:ktor-client-jackson:1.6.4"

implementation "io.ktor:ktor-client-okhttp:1.6.4"

2. 建立客戶端應用程式:

建立一個包含客戶端應用程式的 Kotlin 檔案,例如 Client.kt

import io.ktor.client.*

import io.ktor.client.engine.okhttp.OkHttp

import io.ktor.client.features.json.JsonFeature

import io.ktor.client.features.json.serializer.KotlinxSerializer

import io.ktor.client.request.*


data class Message(val text: String)


suspend fun main() {

    val client = HttpClient(OkHttp) {

        install(JsonFeature) {

            serializer = KotlinxSerializer()

        }

    }


    // GET 請求

    val response = client.get<Message>(")

    println("GET response: ${response.text}")


    // POST 請求

    val postResponse = client.post<Message>(") {

        body = Message("Ktor client is echoing!")

    }

    println("POST response: ${postResponse.text}")


    client.close()

}

3. 執行客戶端:

執行你的客戶端應用程式。這個例子使用 OkHttp 作為客戶端引擎,向伺服器發起 GET 和 POST 請求。

這只是一個簡單的示例,Ktor 還提供了許多其他功能,如路由、中介軟體、WebSockets 等。你可以根據你的應用程式需求進行配置和擴充套件。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70028343/viewspace-3003702/,如需轉載,請註明出處,否則將追究法律責任。

相關文章