从 2.0.x 迁移到 2.2.x
本指南提供了关于如何将你的 Ktor 应用程序从 2.0.x 版本迁移到 2.2.x 版本的说明。
标记为
WARNING
弃用级别的 API 将继续工作,直到 3.0.0 版本发布。 关于弃用级别的更多信息,请参阅 Deprecated。
Ktor 服务器
Cookie
从 v2.2.0 开始,以下与配置响应 cookie 相关的 API 成员已更改:
- 传递给
append
函数的maxAge
形参类型从Int
更改为Long
。 appendExpired
函数已弃用。请改用带expires
形参的append
函数。
请求地址信息
从 2.2.0 版本开始,用于获取请求所发往的主机名/端口的 RequestConnectionPoint.host
和 RequestConnectionPoint.port
属性已弃用。
kotlin
get("/hello") {
val originHost = call.request.origin.host
val originPort = call.request.origin.port
}
请改用 RequestConnectionPoint.serverHost
和 RequestConnectionPoint.serverPort
。 我们还添加了 localHost
/localPort
属性,它们返回接收请求的主机名/端口。 关于请求地址信息的更多信息,请参阅原始请求信息。
合并配置
在 v2.2.0 之前,List<ApplicationConfig>.merge()
函数用于合并应用程序配置。 如果两个配置具有相同的键,则结果配置将采用第一个配置中的值。 在此版本中,引入了以下 API 以改进此行为:
public fun ApplicationConfig.withFallback(other: ApplicationConfig): ApplicationConfig
:此函数的工作方式与merge()
相同,并采用第一个配置中的值。public fun ApplicationConfig.mergeWith(other: ApplicationConfig): ApplicationConfig
:结果配置将采用第二个配置中的值。
Ktor 客户端
缓存:持久化存储
从 v2.2.0 开始,以下与响应缓存相关的 API 已弃用:
HttpCacheStorage
类已替换为CacheStorage
接口,后者可用于为所需平台实现持久化存储。publicStorage
/privateStorage
属性已替换为接受CacheStorage
实例的相应函数。
自定义插件
从 2.2.0 版本开始,Ktor 提供了一个新的 API 用于创建自定义客户端插件。 欲了解更多信息,请参阅自定义客户端插件。
新内存模型
从 v2.2.0 开始,Ktor 使用 Kotlin 的 1.7.20 版本,其中新的 Kotlin/Native 内存模型默认启用。 这意味着你无需为原生服务器或面向 Kotlin/Native 的客户端引擎显式启用它。