Pola URL Format URL universal RESTForge: POST /api/{project}/{endpoint}/{action}
Seluruh endpoint RESTForge mengikuti satu pola URL universal. Konsistensi (consistency) ini menyederhanakan dokumentasi, monitoring, dan integrasi tooling karena setiap endpoint memiliki format yang dapat diprediksi.
{METHOD} /api/{project}/{endpoint}/{action}
Setiap segmen URL memiliki peran spesifik:
Segmen Keterangan Contoh /apiPrefix tetap untuk semua endpoint RESTForge /api{project}Nama project, ditentukan saat menjalankan server via --project mini-inventory{endpoint}Nama endpoint, berasal dari nama file payload supplier{action}Nama operasi yang akan dijalankan create, datatables, first
Dengan asumsi server berjalan di http://localhost:3000 untuk project mini-inventory:
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
POST http://localhost:3000/api/mini-inventory/supplier/aggregate
POST http://localhost:3000/api/mini-inventory/item-product/adjust
POST http://localhost:3000/api/mini-inventory/stock-inbound/change-status
Action Method Fungsi /datatablesPOST Data list dengan pagination, search, dan sort (format DataTables.net) /createPOST Insert satu record baru /updatePOST Update satu record berdasarkan primary key /deletePOST Hapus satu record berdasarkan primary key /firstPOST Ambil detail satu record berdasarkan primary key /lookupGET / POST Data untuk autocomplete/dropdown (format {id, text}) /readPOST Data universal dengan pagination, WHERE kompleks, dan kolom selektif
Action Method Fungsi /aggregatePOST Fungsi agregasi (COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING)
Endpoint /lookup mendukung dua HTTP method: GET dengan header X-Request-Mode: dynamic untuk pencarian real-time (autocomplete), dan POST dengan header X-Request-Mode: static untuk memuat seluruh data dropdown atau data dengan filter.
Action Method Fungsi /adjustPOST Atomic increment/decrement field numerik
Action Method Fungsi /create-compositePOST Buat header + detail items dalam satu transaksi /read-compositePOST Baca header beserta detail items /update-compositePOST Update header + insert/update/delete detail items
Action Method Fungsi /exportPOST Trigger async export job ke Excel /export-statusGET Polling status export job /export-downloadGET Download file Excel hasil export /import-uploadPOST Upload file Excel (multipart/form-data) /import-previewPOST Validasi dan preview data import /import-commitPOST Eksekusi INSERT/UPDATE ke database /import-statusGET Polling status import job
Action Method Fungsi /change-statusPOST Perubahan status record dengan validasi transisi dan hook
Action Method Fungsi /lock/acquirePOST Mengunci satu atau lebih record /lock/releasePOST Melepas kunci record /lock/statusPOST Mengecek status kunci record
Setiap action diaktifkan melalui property action di file payload. Beberapa action memerlukan konfigurasi tambahan:
Action Property di action Konfigurasi Tambahan /datatablesdatatables: truedatatablesQuery, datatablesWhere/createcreate: truefieldValidation (opsional)/updateupdate: truefieldValidation (opsional)/deletedelete: true— /firstfirst: trueviewQuery, viewName (opsional)/lookuplookup: truefieldNameLookup (opsional)/readread: trueviewQuery, viewName (opsional)/adjustadjust: trueadjustConfig/aggregateaggregate: trueaggregateConfig/create-compositecreateComposite: truemasterDetail/read-compositereadComposite: truemasterDetail/update-compositeupdateComposite: truemasterDetail/exportexport: trueexportQuery, columnFormats (opsional)/import-*import: trueimportConfig/change-statuschangeStatus: trueworkflow
Komponen Konvensi Contoh Project kebab-case mini-inventory, hr-systemEndpoint lowercase, underscore untuk multi-word supplier, stock_inbound, item_productAction lowercase, hyphen untuk multi-word create, create-composite, import-upload
Nama endpoint ditentukan oleh nama file payload (tanpa ekstensi .json). File supplier.json menghasilkan endpoint supplier, file stock_inbound.json menghasilkan endpoint stock_inbound.
Format Response untuk memahami struktur response yang dikembalikan oleh setiap action
Pola Action-Based untuk memahami filosofi di balik pendekatan action-based