JetBrains发布Ktor 3.4框架 增强HTTP客户端处理功能

发布时间:2026-01-29 21:32  浏览量:4

JetBrains公司发布了Ktor 3.4版本,这是其基于Kotlin的异步服务器端和客户端应用开发框架的最新更新。该版本为OkHttp客户端引擎带来了双向流功能,并引入了新的HttpRequestLifecycle插件,可在客户端断开连接时取消正在进行的HTTP请求。

Ktor 3.4于1月23日正式发布,用户可以通过ktor.io网站获取入门指南。

新的HttpRequestLifecycle插件功能介绍

新的HttpRequestLifecycle插件能够在客户端断开连接时取消正在进行的HTTP请求,这一功能在需要取消长时间运行或资源密集型请求时特别有用。当客户端断开连接时,处理请求的协程会被取消,同时客户端启动的launch或async协程也会被取消,结构化并发会清理所有资源。目前此功能仅支持Netty和CIO引擎。

动态文档生成API

Ktor 3.4还引入了用于动态记录端点的新API,该API与新的编译器插件协同工作。与从静态文件构建Swagger前端不同,该模型在运行时从路由树中嵌入的详细信息构建。为了生成文档,开发者可以通过Ktor Gradle插件启用此功能,然后它将通过新的describe API自动在代码中提供详细信息。

OkHttp客户端引擎双向流支持

在Ktor 3.4中,OkHttp客户端引擎现在支持双向流,使客户端能够同时发送请求体数据和接收响应数据,这与常规HTTP调用形成对比——常规调用中请求体必须完全发送后才能开始接收响应。双向流功能适用于HTTP/2连接,可以通过在OkHttpConfig中使用新的duplexStreamingEnabled属性来启用。

Zstd压缩算法支持

此外,压缩插件现在通过ktor-server-compression-zstd模块支持Zstd算法。Zstd是一种快速压缩算法,具有高压缩比、低压缩时间和可配置的压缩级别等特点。

Q&A

Q1:Ktor 3.4的HttpRequestLifecycle插件有什么作用?

A:HttpRequestLifecycle插件能够在客户端断开连接时取消正在进行的HTTP请求,这在需要取消长时间运行或资源密集型请求时特别有用。当客户端断开连接时,处理请求的协程会被取消,结构化并发会清理所有资源。目前仅支持Netty和CIO引擎。

Q2:Ktor 3.4的双向流功能有什么优势?

A:双向流功能使客户端能够同时发送请求体数据和接收响应数据,与常规HTTP调用不同,不需要等待请求体完全发送后才开始接收响应。该功能适用于HTTP/2连接,可以通过OkHttpConfig中的duplexStreamingEnabled属性启用。

Q3:Ktor 3.4如何改进文档生成功能?

A:Ktor 3.4引入了动态记录端点的新API,与编译器插件协同工作。该模型在运行时从路由树中嵌入的详细信息构建,而不是从静态文件构建Swagger前端。开发者可以通过Ktor Gradle插件启用,然后通过新的describe API自动在代码中提供详细信息。