RESTForge

Pola Action-Based

Konsep endpoint berbasis action menggunakan HTTP POST untuk semua operasi

RESTForge menggunakan pola action-based sebagai pengganti pendekatan REST tradisional. Seluruh operasi dilakukan melalui HTTP POST dengan nama action di URL path, bukan melalui perbedaan HTTP method seperti GET, PUT, atau DELETE.

Ikhtisar (Overview)

Dalam pola action-based, setiap operasi terhadap sebuah endpoint diwakili oleh nama action yang eksplisit di segmen terakhir URL:

POST /api/{project}/{endpoint}/{action}

Contoh: untuk melakukan operasi create pada endpoint supplier di project mini-inventory, request dikirim ke:

POST /api/mini-inventory/supplier/create

Pola ini berlaku konsisten untuk seluruh operasi, baik CRUD standar maupun operasi lanjutan seperti export, import, atau aggregate.

Perbandingan dengan REST Tradisional (Comparison with Traditional REST)

REST tradisional menggunakan kombinasi HTTP method dan resource URL untuk membedakan operasi. RESTForge memilih pendekatan berbeda di mana method selalu POST dan operasi ditentukan oleh nama action.

OperasiREST TradisionalRESTForge (Action-Based)
Membuat dataPOST /api/suppliersPOST /api/mini-inventory/supplier/create
Membaca satu recordGET /api/suppliers/:idPOST /api/mini-inventory/supplier/first
Membaca banyak recordGET /api/suppliersPOST /api/mini-inventory/supplier/read
Mengubah dataPUT /api/suppliers/:idPOST /api/mini-inventory/supplier/update
Menghapus dataDELETE /api/suppliers/:idPOST /api/mini-inventory/supplier/delete

RESTForge tidak sepenuhnya REST purist, tetapi pragmatis. Trade-off ini diambil dengan sadar karena kebutuhan praktis tim backend lebih penting daripada konformitas penuh terhadap standar REST.

Mengapa Pendekatan Ini Dipilih (Why This Approach Was Chosen)

ManfaatPenjelasan
Mendukung query kompleksFilter dengan nested condition, multi-operator, dan logika AND/OR dapat dikirim di body tanpa limitasi URL length
Konsisten lintas operasiTim tidak perlu beralih antara GET, POST, PUT, DELETE dengan semantik yang berbeda-beda
Mendukung payload besarOperasi seperti import, bulk create, atau composite master-detail dapat dikirim dalam satu request
Mudah didokumentasikanSetiap action adalah resource terpisah dengan format yang sama sehingga lebih mudah di-document dan di-version

Pada pendekatan REST tradisional, operasi baca yang membutuhkan filter kompleks sering kali menghadapi kendala panjang URL. Dengan action-based pattern, seluruh parameter dikirim di request body sehingga tidak ada batasan tersebut.

Tujuh Action Standar (Seven Standard Actions)

Setiap endpoint yang di-generate oleh RESTForge memiliki hingga tujuh action standar yang dapat diaktifkan melalui konfigurasi payload:

ActionMethodFungsiUse Case
datatablesPOSTData dengan pagination, search, dan sortTabel data di browser (DataTables.net)
createPOSTInsert satu record baruForm tambah data
updatePOSTUpdate satu record berdasarkan primary keyForm edit data
deletePOSTHapus satu record berdasarkan primary keyTombol hapus
firstPOSTMembaca satu record berdasarkan kondisiHalaman detail atau form edit
lookupGET / POSTData untuk dropdown atau autocompleteKomponen select/combobox
readPOSTMembaca banyak record dengan pagination dan filterAPI konsumsi, mobile app, reporting

Contoh URL untuk project mini-inventory dengan endpoint supplier:

POST http://localhost:3000/api/mini-inventory/supplier/datatables
POST http://localhost:3000/api/mini-inventory/supplier/create
POST http://localhost:3000/api/mini-inventory/supplier/update
POST http://localhost:3000/api/mini-inventory/supplier/delete
POST http://localhost:3000/api/mini-inventory/supplier/first
GET  http://localhost:3000/api/mini-inventory/supplier/lookup?search=keyword
POST http://localhost:3000/api/mini-inventory/supplier/lookup
POST http://localhost:3000/api/mini-inventory/supplier/read

Action Lanjutan (Advanced Actions)

Selain tujuh action standar, RESTForge menyediakan action lanjutan untuk kebutuhan yang lebih spesifik:

KategoriActionFungsi
Pengambilan data lanjutanaggregateFungsi agregasi (COUNT, SUM, AVG, MIN, MAX, GROUP BY)
Operasi khususadjustAtomic increment/decrement field numerik
Workflowchange-statusPerubahan status record dengan validasi transisi dan hook
CRUD Compositecreate-compositeBuat header + detail items dalam satu transaksi
read-compositeBaca header beserta detail items
update-compositeUpdate header + insert/update/delete detail items
Export dan ImportexportTrigger async export ke Excel
import-uploadUpload file Excel untuk import
import-previewValidasi dan preview data import
import-commitEksekusi INSERT/UPDATE ke database
Resource Locklock/acquireMengunci record untuk mencegah concurrent edit
lock/releaseMelepas kunci record
lock/statusMengecek status kunci record

Action lanjutan memerlukan konfigurasi tambahan di file payload. Misalnya, aggregate membutuhkan aggregateConfig, sedangkan create-composite membutuhkan masterDetail. Detail konfigurasi tersedia di halaman dokumentasi masing-masing fitur.

Langkah Selanjutnya (Next Steps)

  • Struktur Payload untuk memahami file konfigurasi yang mendefinisikan action mana saja yang diaktifkan
  • Pola URL untuk katalog lengkap URL dan pemetaan action ke konfigurasi payload

On this page