Study
Ktor

Validasi Input

Penjelasan

Ktor TIDAK punya validasi bawaan terintegrasi seperti Gin — pola umum: validasi manual di dalam handler (cek kondisi, lempar exception kalau tidak valid), ditangkap StatusPages supaya responsnya konsisten. Beberapa project memakai library eksternal (mis. Konform) untuk validasi lebih deklaratif.

Contoh Konsep

post("/produk") {
    val request = call.receive<ProdukRequest>()

    if (request.nama.isBlank() || request.nama.length < 3) {
        throw IllegalArgumentException("Nama produk minimal 3 karakter")
    }
    if (request.harga < 0) {
        throw IllegalArgumentException("Harga tidak boleh negatif")
    }

    call.respond(HttpStatusCode.Created, request)
}

// Ditangkap StatusPages (dari materi sebelumnya) supaya responsnya konsisten

Praktikum

Tambahkan validasi manual di route POST /artikel: kalau request.judul.length < 5, throw IllegalArgumentException dengan pesan "Judul minimal 5 karakter".

Editor Latihan

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

Tips

Melempar exception (throw) dari dalam handler route AMAN dilakukan di Ktor karena StatusPages akan MENANGKAPNYA secara terpusat — kamu tidak perlu try/catch manual di TIAP handler, cukup satu blok StatusPages yang menangani semua jenis exception yang relevan di satu tempat.