ktor, rest и тип контента text / plain не поддерживаются - PullRequest
0 голосов
/ 03 марта 2020

На стороне KTOR я думаю, что я настроил сериализацию

install(ContentNegotiation) {
    serialization(
        contentType = ContentType.Application.Json,
        json = Json(
            DefaultJsonConfiguration.copy(
                prettyPrint = true
            )
        )
    )
}

Но когда я отправляю сообщение на эту конечную точку, я получаю Тип содержимого text / plain не поддерживается

мой маршрут выглядит следующим образом

post("/"){
    try {
        //val request = call.receive<String>()
        val request = call.receive<AuthorREQ>()
        call.respond(request)
    }catch (e:Exception){
        val foo =true
    }
}

Мой код на стороне клиента выглядит следующим образом.

suspend fun  <R: REQ>save(req:R, ctx:ModelCtx,  deserializationStrategy: KSerializer<R>){
    val fetchAddy = "$REST_SERVICE_ADDRESS${ctx.getStub()}"
    val body = Json.stringify(deserializationStrategy, req)
    val responsePromise = window.fetch(fetchAddy, object : RequestInit {
        override var method: String? = "POST"
        override var mode: RequestMode? = RequestMode.NO_CORS
        override var headers = buildHeader()
        override var body = body })

    val response = responsePromise.await()
    val jsonPromise = response.json()
    val json = jsonPromise.await()
}

jvm gradle: реализация ("org.jetbrains.kotlinx: kotlinx-serialization-runtime : $ serialization_version ")

js gradle: реализация (" org.jetbrains.kotlinx: kotlinx-serialization-runtime- js: $ serialization_version ")

проект отлично работает с Мои маршруты get, клиент может использовать их без проблем ... Также меняются мои запросы на следующие, но я не думаю, что именно так это и должно быть.

val request = call.receive<String>()
...