导读 Ktor 是一个异步框架,用于创建微服务、Web 应用等。从头到尾都是用 Kotlin 编写的。

Ktor 2.3.0 近日正式发布,这次更新为 Ktor 生态带来了许多新功能和改进。以下部分简要介绍了该版本的主要变化:

核心改进
WebSockets ContentNegotiation 插件的显试类型

WebSocket ContentNegotiation 插件现在支持指定显式类型:

client.webSocket("ws://localhost:8080/echo") {
    val originalData: Any = Data("hello")
    sendSerialized(originalData, typeInfo())
    val received = receiveDeserialized(typeInfo())

    assertEquals(originalData, received)
}
Socket 的结构化并发支持

来自 ktor-network 的 Socket 实现现在是一个 CoroutineScope。这意味着它支持 cancel() 操作来立即终止连接。

close() 继续作为正常关闭工作,并将等待所有待定操作完成。

抛弃 JS 遗留配置

即将发布的 Kotlin 1.9.0 版本将删除遗留的 JS 编译器。从 Ktor 2.3.0 开始,传统的编译器不再被支持。请考虑迁移到新的 IR 编译器。

服务器
路由中的正则表达式支持

Ktor 现在允许在定义路由时使用正则表达式。使用正则表达式路由,你可以匹配一个复杂的路由,并轻松地捕获路由参数。

routing {
    get(Regex("^(?.+)$")) {
        val name = call.parameters["name"]
        call.respondText("Hello, $name!")
    }
}
Static Content API 清理

Static Content API 已经被完善和精简,以获得更友好的用户体验。这次我们把重点放在最常见的情况上,并为它们做了一个简单的 API:

routing {
    staticFiles("/static", File("files"))
}

将为 /static 路径下的 files 目录中的所有文件提供服务。旧的 API 仍然可用,并将被支持。

而且我们也可以从资源中提供文件:

支持 CIO 的 100 Continue

CIO 引擎现在支持 100 Continue 状态。它开箱即用,不需要额外配置。

支持多个配置文件

通过允许使用多个文件,配置管理得到了简化。你可以使用 -config CLI 选项传递多个配置文件。配置文件将被依次加载和合并。

支持 Jetty 11 和 Tomcat 10

对于已经包含 Jetty 或 Tomcat 依赖关系的项目,Ktor 2.3.0 增加了对 Jetty 11 和 Tomcat 10 服务器实现的支持。它们是作为单独的依赖项交付的:

dependencies {
    implementation("io.ktor:ktor-server-jetty-jakarta:2.3.0")
    implementation("io.ktor:ktor-server-tomcat-jakarta:2.3.0")
    implementation("io.ktor:ktor-server-servlet-jakarta:2.3.0")
}

原文来自:https://www.oschina.net/news/238179/ktor-2-3-0-released

本文地址:https://www.linuxprobe.com/ktor-web-kotlin.html编辑:xiangping wu,审核员:清蒸github

Linux命令大全:https://www.linuxcool.com/

Linux系统大全:https://www.linuxdown.com/

红帽认证RHCE考试心得:https://www.rhce.net/