从 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 的客户端引擎显式启用它。
