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.
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.