【问题标题】:Internal server error while sending a post request with Ktor使用 Ktor 发送发布请求时出现内部服务器错误
【发布时间】:2021-12-19 16:09:41
【问题描述】:

我正在尝试制作一个允许我查询所有元素的简单 API。它列出了客户和订单的所有数据。

我有针对客户和订单的 GET、POST、DELETE 路线。这些订单和客户是数据类。现在,当我尝试发送发布请求时,它会给出 500 INTERNAL SERVER ERROR 并给出此错误

kotlinx.serialization.SerializationException:找不到类“客户”的序列化程序。`

但我已经用@Serializable 注释了我的Customer 类。

我的 GET 请求正常工作。

客户数据类

data class Customer(
    val id : String,
    val firstName : String,
    val lastName : String,
    val email : String,
)
val customerStorage = mutableListOf<Customer>()

订单数据类

data class Order(
    val number: String, //Because it will contain a number with dashes
    val contents : List<OrderItem>,
)

@Serializable
data class OrderItem(
    val item : String,
    val amount : Int, //what is the amount of each item in each order
    val price : Double,
)

//place to store our orders
val orderStorage = listOf(Order(
    "2020-04-06-01", listOf(
        OrderItem("Ham Sandwich",2,5.50),
        OrderItem("Water",1,1.50),
        OrderItem("Beer",3,2.30),
        OrderItem("Cheesecake", 1,3.75)
    )

),
    Order("2020-04-03-01", listOf(
        OrderItem("Cheeseburger",1,8.50),
        OrderItem("Water", 2,1.50),
        OrderItem("Coke",2,1.76),
        OrderItem("Ice Cream", 1,2.35)
    ))
)

客户的发布路线

post{
    val customer = call.receive<Customer>()
    customerStorage.add(customer) 
    call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
}

我指的是this tutorial

【问题讨论】:

标签: android rest kotlin ktor


【解决方案1】:

我还指的是您提到的教程。我遇到了同样的错误。我将 ktor_version=1.6.5 更改为 ktor_version=1.6.1 并运行了该项目。效果很好。

我认为 kotr 版本 1.6.5 存在一些问题。

另外,不要忘记在 build.gradle.kts 文件中添加kotlin("plugin.serialization") version "1.6.0"。它应该是这样的:

plugins {
application
kotlin("jvm") version "1.6.0"
kotlin("plugin.serialization") version "1.6.0" }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多