导读 | Ktor 是一个异步框架,用于创建微服务、Web 应用等。从头到尾都是用 Kotlin 编写的。 |
Ktor 2.3.0 近日正式发布,这次更新为 Ktor 生态带来了许多新功能和改进。以下部分简要介绍了该版本的主要变化:
WebSocket ContentNegotiation 插件现在支持指定显式类型:
client.webSocket("ws://localhost:8080/echo") { val originalData: Any = Data("hello") sendSerialized(originalData, typeInfo()) val received = receiveDeserialized(typeInfo()) assertEquals(originalData, received) }
来自 ktor-network 的 Socket 实现现在是一个 CoroutineScope。这意味着它支持 cancel() 操作来立即终止连接。
close() 继续作为正常关闭工作,并将等待所有待定操作完成。
即将发布的 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 已经被完善和精简,以获得更友好的用户体验。这次我们把重点放在最常见的情况上,并为它们做了一个简单的 API:
routing { staticFiles("/static", File("files")) }
将为 /static 路径下的 files 目录中的所有文件提供服务。旧的 API 仍然可用,并将被支持。
而且我们也可以从资源中提供文件:
支持 CIO 的 100 Continue
CIO 引擎现在支持 100 Continue 状态。它开箱即用,不需要额外配置。
通过允许使用多个文件,配置管理得到了简化。你可以使用 -config CLI 选项传递多个配置文件。配置文件将被依次加载和合并。
对于已经包含 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") }
原文来自:
本文地址://q13zd.cn/ktor-web-kotlin.html编辑:xiangping wu,审核员:清蒸github
Linux大全:
Linux系统大全: