Study
Ktor

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

Editor Latihan

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.