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