diskusi.tech (beta) Community

loading...

Mungkin API Berbasis CRUD Bukan Ide Bagus

rizaramadan profile image Riza ・2 min read

Konteks

Yang dimaksud API adalah mekanisme berinteraksi dengan perangkat lunak berbasis web, dimana masa sekarang ini, banyak aplikasi web yang dibangun dengan menerapkan konsep API

Sedangkan yang dimaksud dengan CRUD, adalah singkatan dari Create-Read-Update-Delete

Mengapa CRUD

Menurut wiki, CRUD pada dasarnya adalah operasi yang terkait dengan menuliskan data pada tempat penyimpanan yang permanen seperti harddisk. Kemudian CRUD ini juga tampaknya menjadi acuan bagi RESTful API dimana setiap operasi memiliki padanannya pada HTTP Method.

Membuat API dengan berbasis CRUD cukup sederhana dan bisa memenuhi berbagai macam kebutuhan perangkat lunak. Konsepnya pun mudah dipahami sehingga para perekayasa pemula bisa dapat dengan cepat mengerti cara kerjanya. Banyak tutorial-tutorial di internet mengajarkan penggunaan bahasa pemrograman, kerangka kerja, platform atau basis data dengan mencontohkan pembuatan CRUD.

Mengapa CRUD bukan ide bagus

Karena CRUD merupakan konsep yang sederhana, untuk perangkat lunak yang rumit dan dikembangkan oleh banyak perekayasa, API berbasis CRUD ini kurang bagus karena operasinya berfokus pada entitas / data sehingga kurang jelasapa maksud dibalik eksekusi suatu operasi.

Misalnya operasi Create pada suatu objek User, apa maksudnya pembuatan objek tersebut? tidak seketika menjadi jelas. Bandingkan dengan operasi Register yang didalamnya akan membuat objek User, seketika kita bisa pahami bahwa pembuatan objek User dikarenakan ada pengguna baru yang mendaftarkan diri.

Contoh lainnya operasi Update pada suatu objek Account, tidak seketika menjadi jelas, apakah ada penarikan tunai? apakah ada transfer? apakah ada autodebet? Akan lebih jelas jika masing-masing operasi tersebut, Tarik-Tunai, Transfer, Auto-Debet dan sebagainya yang menjadi API-nya.

Dua contoh diatas adalah opsi lain dari pembuatan API berdasarkan CRUD, yakni pembuatan API berdasarkan kapabilitas aplikasi.

Manfaat API berdasarkan kapabilitas aplikasi

Penyusunan API berdasarkan kapabilitas aplikasi akan membuat intensi pemanggilan menjadi jelas, dan tentunya ada manfaat lainnya yakni:

  • Memudahkan untuk menghubungkan antara Spek Aplikasi dengan Kode, karena nama atau kalimat yang ada pada spek aplikasi, kita gunakan langsung untuk memberi nama pada API-nya
  • Pemisahan kapabilitas pada API akan berdampak pada kode implementasi API yang relatif lebih sedikit percabangannya
  • Cukup mudah untuk diobservasi bagaimana jumlah pemakaian masing-masing API sehingga bisa di scale sesuai kebutuhan

Kekurangan API berdasarkan kapabilitas

Seperti halnya semua practices di keilmuan rekayasa perangkat lunak, tidak ada yang berlaku untuk seluruh kasus. API berdasarkan kapabilitas ini pun tidak cocok digunakan oleh tim jumlahnya tidak banyak, misalnya 2 atau 3 orang, dan pada situasi dimana harus menyelesaikan aplikasi dengan tenggat waktu yang singkat. Apalagi jika hanya seorang perekayasa, akan sangat membebani pekerjaan dan membuat produktivitas menjadi lambat.

Kesimpulan

Selain pembuatan API berbasis CRUD, terdapat alternatif lain yakni pembuatan API berbasis kapabilitas dari aplikasi. Manfaat utamanya jika dibandingkan dengan CRUD adalah lebih jelas intensinya, sedangkan kekurangannya adalah lebih rumit dari CRUD.

Referensi

Discussion

pic
Editor guide
Collapse
galangairlangga profile image
Galang Airlangga

Apakah ada contoh best practicenya?

Collapse
rizaramadan profile image
Riza Author

Sebenarnya tidak ada best practice yang bisa digunakan untuk semua situasi, karena sifatnya kontekstual, Tapi ada skenario yang bisa mencontohkan, misalnya ada API berikut:

GET /article/{id}
POST /article/{id}

GET digunakan untuk melihat, dan POST digunakan untuk mengubah artikel serta publish artikel. Pada kasus seperti ini, mungkin akan lebih jelas jika diubah menjadi:

GET /article/{id}
POST /article/{id}/publish
PUT /article/{id}/edit

Collapse
farhamapple profile image
Farham Harvianto

Seperti Route di Laravel ya?

Thread Thread
rizaramadan profile image
Riza Author

seperti route pada umumnya, hampir semua fullstack framework untuk kebanyakan bahasa memfasilitasi route seperti itu