Študijné materiály

Poďme si ukázať, ako odpovedať na GET požiadavky a vrátiť JSON dáta:

import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import io.ktor.serialization.kotlinx.json.*
import kotlinx.serialization.Serializable

@Serializable
data class User(val id: Int, val name: String, val email: String)

fun main() {
    val users = listOf(
        User(1, "Janko", "janko@example.com"),
        User(2, "Fero", "fero@example.com"),
        User(3, "Marek", "marek@example.com")
    )

    embeddedServer(Netty, port = 8080) {
        install(ContentNegotiation) {
            json()
        }
        routing {
            get("/users") {
                call.respond(users)
            }
            get("/users/{id}") {
                val id = call.parameters["id"]?.toIntOrNull()
                val user = users.find { it.id == id }
                if (user != null) {
                    call.respond(user)
                } else {
                    call.respondText("Pouzivatel nenajdeny")
                }
            }
        }
    }.start(wait = true)
}

18.2.1 Testovanie

Spusti server a otestuj v prehliadači alebo cez curl:

curl http://localhost:8080/users
curl http://localhost:8080/users/1
curl http://localhost:8080/users/999

call.respond(dáta) automaticky serializuje objekt do JSON vďaka ContentNegotiation.

Úlohy

Úloha 1

Vytvor endpoint GET /produkty, ktorý vráti zoznam serializovateľných produktov.

Úloha 2

Pridaj endpoint GET /produkty/{id} a pri nenájdení vráť vhodnú odpoveď.

Úloha 3

Otestuj oba endpointy cez curl.