Ktor: Как я могу проверить запрос JSON? - PullRequest
0 голосов
/ 15 января 2019

Я уже знаю, как получить объект JSON и автоматически десериализовать его в требуемый формат (например, с помощью класса данных).Также смотрите здесь: Как получить объект JSON в Ktor?

Моя проблема сейчас в том, что я хочу проверить запрос JSON и вернуть BadRequest, если он не в нужном формате, что-токак в Django: https://stackoverflow.com/a/44085405/5005715

Как я могу это сделать в Ktor / Kotlin?К сожалению, я не смог найти решение в документации.Кроме того, обязательные / дополнительные поля были бы хорошими.

Ответы [ 2 ]

0 голосов
/ 29 марта 2019

Я не уверен, что у Ктора уже есть что-то для этого. Источник справляется с этим с помощью @ Допустимая аннотация . Я также искал что-то вроде этого, чтобы сделать проверку, будь то JSON или объект. Я нашел этот фреймворк https://github.com/making/yavi. Выглядит интересно. Я попробую

0 голосов
/ 16 января 2019

Вот краткий пример того, как проверить и ответить 400 при необходимости.

fun main(args: Array<String>) {
    embeddedServer(Netty, 5000) {
        install(CallLogging)
        install(ContentNegotiation) { gson {  } }
        install(Routing) {
            post(   "test") {
                val sample = call.receive<Sample>()
                if (!sample.validate()) {
                    call.respond(HttpStatusCode.BadRequest, "Sample did not pass validation")
                }
                call.respond("Ok")
            }
        }
    }.start()
}

fun Sample.validate(): Boolean = id > 5

data class Sample(val id: Int)

Вы имели в виду что-то еще?

Нет встроенных аннотаций или тому подобного.

...