iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
Software Development

每天一點 Ktor 3.0:一個月學會 Kotlin 後端開發系列 第 23

Day 23:使用 ContentNegotiation 更換回傳格式

  • 分享至 

  • xImage
  •  

作為一個後端框架,最常見的功能除了產生前端畫面以外,還有作為 API Server 生成 Json 之類的回傳內容。

今天我們來看看 Ktor 怎麼生成這個內容

根據 https://openaidoc.org/zh-Hant/ktor/server-serialization

我們可以使用 Kotlin 內建的 Map 和 List

get("/json/kotlinx-serialization") {
    call.respond(mapOf("hello" to "world"))
}

另外我們可以使用 @Serializable annotation 來標記我們想轉換的物件

這個標記搭配上 Kotlin 的 data class 非常好用

import kotlinx.serialization.Serializable

@Serializable
data class Person(val name: String, val age: Int)

fun Application.configureSerialization() {
    install(ContentNegotiation) {
        json()
    }

    routing {
        get("/json/kotlinx-serialization") {
            call.respond(Person("Alice", 18))
        }
    }
}

如果我們想支援其他的回傳格式,比方說 protobuf

我們只需要調整 install 裡面的內容就好

@Serializable
data class Person(val name: String, val age: Int)

fun Application.configureSerialization() {
    install(ContentNegotiation) {
        protobuf()
    }

    routing {
        get("/json/kotlinx-serialization") {
            call.respond(Person("Alice", 18))
        }
    }
}

這也是使用 Kotlin 作為後端開發的一個優勢

由於引入了 data class 這類型別,所以我們在定義回傳型態時,不需要特別去撰寫很多的 setter/getter,

只需要列出所有的參數,Kotlin 就自動幫我們加入對應的 setter 和 getter 了。

要更換回傳的資料格式,我們只需要更換資料的處理方式即可。

今天的部分就到這邊,我們明天見!


上一篇
Day 22:Ktor 善用 trailing lambda 設計的前端生成框架
下一篇
Day 24:Ktor 的自動化測試
系列文
每天一點 Ktor 3.0:一個月學會 Kotlin 後端開發25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言