什么是 Ktor 以及为什么需要它?
Ktor 是一个异步 Web 框架,由 JetBrains 公司(IntelliJ IDEA 和 Kotlin 本身的创建者)用 Kotlin 语言编写。它旨在利用 Kotlin 协程的强大功能来创建服务器应用程序、HTTP 客户端和微服务。Ktor 完全基于协程构建,使其非阻塞、轻量级且性能极高。
为什么要使用 Ktor?首先,它是一个原生 Kotlin 框架,与语言生态系统完美集成。其次,Ktor 是模块化的:您只连接需要的组件(路由、序列化、身份验证、WebSockets 等)。第三,它支持多平台:相同的客户端代码可以在 JVM、Android、iOS 和 JavaScript 上运行。Ktor 非常适合创建 REST API、微服务,以及编写可以在任何平台上运行的 HTTP 客户端。
安装 Ktor
Ktor 不是一个单一的库,而是一组 Gradle 依赖项。安装通过 Gradle(或 Maven)构建系统进行。首先,创建一个新的 Kotlin 项目,并将以下依赖项添加到 build.gradle.kts 文件中:
// build.gradle.ktsval ktorVersion = "2.3.12" // 撰写时的当前版本
plugins { kotlin("jvm") version "1.9.22" application}
dependencies { // Ktor 服务器 implementation("io.ktor:ktor-server-core:$ktorVersion") implementation("io.ktor:ktor-server-netty:$ktorVersion") // Netty 引擎 implementation("io.ktor:ktor-server-content-negotiation:$ktorVersion") // 用于 JSON implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion") // JSON 序列化
// Ktor 客户端(如果需要) implementation("io.ktor:ktor-client-core:$ktorVersion") implementation("io.ktor:ktor-client-cio:$ktorVersion") // CIO 引擎 implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion")
// 日志记录 implementation("ch.qos.logback:logback-classic:1.4.14")}
application { mainClass.set("ApplicationKt") // 入口点}之后,运行 ./gradlew build 命令以下载依赖项。如果您使用 Maven,可以在 Ktor 官方网站上找到类似的依赖项。为了快速入门,您还可以使用 start.ktor.io 上的项目生成器。
快速入门及代码示例
让我们创建一个简单的 HTTP 服务器,它在对根路径的 GET 请求上响应 "Hello, World!"。
import io.ktor.server.application.*import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.response.*import io.ktor.server.routing.*
fun main() { embeddedServer(Netty, port = 8080) { routing { get("/") { call.respondText("Hello, World!") } } }.start(wait = true)}运行此代码。现在打开浏览器并访问 http://localhost:8080。您将看到文本 "Hello, World!"。恭喜,您的第一个 Ktor 服务器已启动!
Ktor 的主要方法和函数
以下是您最常使用的 10 个关键 Ktor 方法/函数。
1. embeddedServer
功能: 创建并启动一个嵌入式 HTTP 服务器。这是任何 Ktor 应用程序的主要入口点。
参数:
engine— 服务器引擎(Netty, CIO, Jetty, Tomcat)。port— 监听端口(默认为 80)。host— 主机(默认为 0.0.0.0)。module— 配置应用程序(路由、插件)的 lambda 函数。
示例:
embeddedS