【问题标题】:How do I convert json into a kotlin object in ktor using content negotiation?如何使用内容协商将 json 转换为 ktor 中的 kotlin 对象?
【发布时间】:2018-07-23 10:59:30
【问题描述】:

我是 Ktor 的新手,我正在尝试构建一个处理登录凭据的后端。我正在尝试使用内容协商功能将 JSON 转换为本机 Kotlin 对象,但我不断收到不受支持的媒体类型异常。这是我的代码:

fun Application.main() {
    install(CallLogging)
    install(DefaultHeaders)
    install(ContentNegotiation) {
        register(ContentType.Application.Json, GsonConverter())
    }
    routing {
        get("/") {
            call.respondHtml {
                head {
                    title("Kotlin Webapp")
                    script {
                        type = ScriptType.textJScript
                        src = "main.bundle.js"
                    }
                }
                body {
                    div {
                        id = "root"
                    }
                }
            }
        }
        post("/login") {
            val credentials = call.receive<Credentials>()
            println(credentials)
        }
    }
}

data class Credentials(val username: String, val password: String)

这是我正在尝试转换的传入 Json,我通过 XMLHttpRequest 发送:

{"username":"Jamdan2","password":"sometext"}

我在网上搜索了答案,但找不到我做错了什么。有人可以帮忙吗?

【问题讨论】:

  • 请求的内容类型是否正确?
  • 这似乎是我的问题。谢谢!

标签: json xmlhttprequest kotlin ktor


【解决方案1】:

为了完整起见,因为我的评论似乎有所帮助:

您需要确保将请求的Content-Type header 设置为正确的值,在本例中为application/json,否则服务器无法完全确定如何处理接收到的内容。

在请求中(例如POSTPUT),客户端告诉服务器实际发送的是什么类型的数据。

xhr.setRequestHeader("Content-Type", "application/json");

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 2018-06-27
    • 2021-07-03
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 2020-04-14
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多