CRUD REST API Lengkap
Penjelasan
REST API CRUD lengkap di Ktor menggabungkan semua materi sebelumnya: route() untuk path terorganisir, ContentNegotiation untuk data JSON, StatusPages untuk error terpusat, Exposed transaction untuk persist ke database — filosofi "pasang plugin yang dibutuhkan saja" tetap konsisten sampai ke API production.
Contoh Konsep
route("/produk") {
get {
val produk = transaction {
Produk.selectAll().map { it[Produk.nama] }
}
call.respond(produk)
}
post {
val request = call.receive<ProdukRequest>()
transaction {
Produk.insert {
it[nama] = request.nama
it[harga] = request.harga
}
}
call.respond(HttpStatusCode.Created, request)
}
delete("/{id}") {
val id = call.parameters["id"]?.toIntOrNull()
transaction {
Produk.deleteWhere { Produk.id eq id!! }
}
call.respond(HttpStatusCode.NoContent)
}
}
Praktikum
Bikin route("/artikel") { } dengan 3 endpoint: get { } (semua artikel), post { } (tambah baru via Exposed insert), delete("/{id}") { } (hapus via deleteWhere, respons NoContent).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
toIntOrNull() (dipakai untuk konversi id dari String? ke Int?) TIDAK melempar exception kalau gagal parsing — mengembalikan null sebagai gantinya, pola idiomatis Kotlin untuk konversi yang MUNGKIN gagal, dibanding toInt() yang langsung crash dengan NumberFormatException kalau formatnya salah.