Study
Ktor

Query String & Request Body

Penjelasan

Query string diakses lewat call.request.queryParameters["nama"]. Untuk body request, Ktor memakai call.receive<T>() — mem-parsing JSON jadi objek Kotlin (biasanya data class), butuh plugin ContentNegotiation terinstal terlebih dahulu supaya bisa bekerja (dibahas lebih dalam di materi Content Negotiation).

Contoh Konsep

@Serializable
data class ProdukRequest(val nama: String, val harga: Double)

get("/cari") {
    val q = call.request.queryParameters["q"] ?: ""
    val halaman = call.request.queryParameters["page"] ?: "1"
    call.respondText("Mencari: $q, halaman: $halaman")
}

post("/produk") {
    val request = call.receive<ProdukRequest>()
    call.respondText("Produk ${request.nama} berhasil dibuat")
}

Praktikum

Buat data class ArtikelRequest (dengan @Serializable) berisi judul dan isi (String). Buat route POST /artikel yang meng-call.receive() body request ke class itu, merespons pesan konfirmasi berisi judul.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Annotation @Serializable (dari kotlinx.serialization, BUKAN Gson/Jackson seperti kebanyakan library Java) WAJIB ada di data class yang dipakai call.receive()/respond() — tanpa itu, Ktor tidak tahu cara mengubah objek Kotlin itu jadi/dari JSON, akan error runtime saat dipanggil.