Ktor 2.3 发布,Kotlin 编写的异步框架


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<Data>())
val received = receiveDeserialized<Data>(typeInfo<Data>())

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("^(?<name>.+)$")) {
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://blog.jetbrains.com/ktor/2023/04/18/ktor-2-3-0-released/


相關推薦

2022-08-15

用等。从头到尾都是用 Kotlin 编写的。 Ktor 2.1.0 近日正式发布,除了新的功能和错误修复之外,还特别发布了三个新工具的测试版。让我们逐一看看这些工具。 本地命令行工具 Ktor 提供了两种方法来简化创建新的应用程序模板

2022-12-19

日确定了 2023 年 Ktor 的路线图,并将专注于 3.0.0 版本的发布。虽然一个主要版本通常通常会带来重大的变化,但 Ktor 3.0.0 大多数变化是关于 API 和包,特别是: 将发布一直在研究的新的简化路由 API。 要切换到 Tomcat 11、Jetty

2022-05-04

使用 Kotlin 构建异步服务器和客户端的 Web 框架,上个月发布了重要的新版本 2.0,并于近日发布了首个补丁更新 2.0.1。 Ktor 2.0 引入了许多新功能,以及破坏性变化,官方称这让他们有机会执行一些维护工作并摆脱遗留决策。尽

2023-08-10

MetaGPT 截至目前,总共产生57个Pull Requests。   论文发布 MetaGPT为什么有效,背后的原理是什么?近期,深度赋智 联合 厦大、港中深、南京大学、宾夕法尼亚大学、及UC伯克利联合发布相关论文。 论文探讨了通过使用由大

2023-04-15

JetBrains 在 KotlinConf’23 大会上宣布,Compose Multiplatform 已支持 iOS,目前处于 alpha 阶段。至此,Compose Multiplatform 基本实现了全平台支持:iOS、Android、Windows、macOS、Linux 和 Web。 Compose Multiplatform 是用于跨多个平台共享 UI 的

2023-04-03

Typing Learner v2.0.3 已经发布,Kotlin 编写的背单词软件 此版本更新内容包括: Typing Learner 2.0 换名字了,新版的名字为:幕境。 新版的UI做了很大的调整,删除了一些不常用的快捷键。 新增功能 视频播放器,以弹幕的形式复

2023-10-14

语言开发而备受开发者青睐。 Eclipse Vert.x 版本 4.4.6 现已发布,此版本修复了自 Vert.x 4.4.5 发布以来已经报告的一些错误。此外还披露了 CVE-2023-44487,这是一个会影响 HTTP/2 服务器的 bug。Vert.x 升级到 Netty 4.1.100.Final,

2023-03-31

语言开发而备受开发者青睐。 Eclipse Vert.x 版本 4.4.1 已经发布。自 Vert.x 4.4.0 发布以来已经报告了不少错误,项目团队对此表达了感谢。具体更新内容包括: vertx-web 升级到 GraphQL-Java 20.1 HttpServerRequest.formAttributes() 有多余的

2023-06-20

NsCDE 是一个复古但功能强大的轻量级 UNIX 桌面环境,类似于 CDE 的外观,但具有更强大和更灵活的底层框架,更适合现代类 unix 和 Linux 系统和用户需求。 NsCDE 结合了一些自由软件组件和自定义 FVWM 应用程序和大量配置,可视作

2022-08-24

年前的 2017 Google I/O 大会上,谷歌宣布:官方正式支持将 Kotlin 作为 Android 开发的 First-Class(一等公民)语言。自此,Kotlin 开发商 JetBrains 和谷歌一直围绕 Kotlin 进行紧密合作,并共同创立了 Kotlin 基金会。 正如最初 I/O 公告中

2022-07-02

Wiki:https://gitee.com/pp/SmsForwarder/wikis/Home PS. 自 2022-06-09 发布 3.0 以来,经过几个小版本的迭代,目前已经趋于稳定,3.x 版本的7天活跃用户占比已攀升到 31.81%,想要升级的用户可以试试了 Q:升级到 3.x 发现很耗电,

2022-10-28

Meta 发布了一篇博客表示,正在将其 Android 应用的 Java 代码迁移到 Kotlin,并分享了这一过程中的一些经验。 该公司认为,Kotlin 是一种流行的 Android 开发语言,与 Java 相比具有一些关键优势。“因此,在我们努力使我们的开发工

2023-11-24

次 commit、一千多个 issue、讨论和 PR 之后,Rocket v0.5 正式发布了。 Rocket 是支持异步的后端Rust Web框架,专注于可用性、安全性、可扩展性和性能。它使编写安全的Web应用程序变得简单,而不会牺牲生产力或性能。 Rocket v0.5

2022-03-25

Linux 操作系统上下载安装。Android Studio 最早于 2013 年 5 月发布,第一个稳定版本则是在 2014 年 12 月发布。 如今要制作一个 Android 应用程序,Android Studio 是必不可少的开发工具,因为它提供了对 Android SDK 的访问、包含各种版本