從 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 的用戶端引擎明確啟用它。