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 仍然可用,并将被支持。
而且我们也可以从资源中提供文件:
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")}
更多详情可查看:https://blog.jetbrains.com/ktor/2023/04/18/ktor-2-3-0-released/
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。如稿件版权单位或个人不想在本网发布,可与本网联系,本网视情况可立即将其撤除。