我是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"}
我已经搜索了网络以寻求答案,但找不到我在做错什么。有人可以帮助吗?
完整性,因为我的评论似乎有所帮助:
您需要确保请求的Content-Type
标头设置为正确的值,在这种情况下,application/json
,否则服务器不能完全确定该如何处理接收到的内容。
在请求(例如
POST
或PUT
(中,客户端告诉服务器实际发送了哪种类型的数据。
xhr.setRequestHeader("Content-Type", "application/json");