Membuat Payload
Cara membuat file konfigurasi payload JSON untuk mendefinisikan endpoint API
Payload adalah file JSON yang mendefinisikan struktur API untuk setiap tabel database. RESTForge menggunakan payload ini untuk men-generate model, module, dan route secara otomatis.
Struktur Dasar Payload (Basic Payload Structure)
{
"tableName": "supplier",
"primaryKey": "supplier_id",
"fieldName": [
"supplier_id",
"supplier_code",
"supplier_name",
"contact_person",
"phone",
"email",
"is_active"
],
"datatablesQuery": "file:query/supplier-datatables.sql",
"datatablesWhere": [
"supplier_code",
"supplier_name",
"contact_person",
"all"
],
"action": {
"datatables": true,
"create": true,
"update": true,
"delete": true,
"first": true,
"lookup": true,
"read": true
}
}Penjelasan Property (Property Reference)
tableName
Nama tabel di database. Jika tabel berada di schema selain public, gunakan format "schema.table_name".
"tableName": "supplier" // schema default (public)
"tableName": "inventory.supplier" // schema eksplisitprimaryKey
Nama kolom primary key. Jika tidak disebutkan, generator menggunakan fieldName[0] sebagai fallback.
"primaryKey": "supplier_id"Selalu sertakan primaryKey secara eksplisit. Property ini digunakan oleh generator untuk WHERE clause pada operasi update, delete, dan first.
fieldName
Array berisi nama kolom yang akan di-handle oleh API. Urutan yang direkomendasikan:
- Primary key
- Code/number (unique identifier)
- Name/title
- Descriptive fields
- Status fields (
is_active,status) - Audit fields (
created_at,created_by,updated_at,updated_by)
datatablesQuery
Query SQL untuk endpoint datatables. Mendukung dua format:
Inline query:
"datatablesQuery": "SELECT supplier_id, supplier_code, supplier_name FROM supplier"External file (direkomendasikan untuk query panjang atau query dengan JOIN):
"datatablesQuery": "file:query/supplier-datatables.sql"File SQL disimpan di folder payload/query/ relatif terhadap folder payload/. Query tidak boleh mengandung WHERE, ORDER BY, atau LIMIT karena ketiga clause tersebut ditambahkan secara otomatis oleh generator.
datatablesWhere
Array kolom yang dapat di-search di endpoint datatables. Tambahkan "all" untuk mengaktifkan pencarian di seluruh kolom yang terdaftar.
"datatablesWhere": ["supplier_code", "supplier_name", "contact_person", "all"]Hindari kolom berikut untuk search: primary key (UUID), foreign key, timestamp, dan kolom dengan tipe data TEXT yang terlalu panjang.
action
Definisi endpoint yang akan di-generate. Set true untuk endpoint yang dibutuhkan dan false untuk yang tidak.
| Action | Fungsi |
|---|---|
datatables | Data dengan pagination untuk DataTables |
create | Insert data baru |
update | Update data yang ada |
delete | Hapus data |
first | Membaca satu record berdasarkan kondisi |
lookup | Data untuk dropdown atau autocomplete |
read | Membaca banyak record |
Action lanjutan seperti export, import, adjust, aggregate, createComposite, updateComposite, dan readComposite tersedia tetapi memerlukan konfigurasi tambahan di payload.
Query dengan JOIN (Queries with JOIN)
Untuk endpoint yang menampilkan data dari beberapa tabel, gunakan file SQL terpisah:
SELECT a.item_product_id,
a.product_code,
a.product_name,
b.category_name,
a.selling_price,
a.stock,
a.is_active
FROM item_product a
INNER JOIN category b ON b.category_id = a.category_idGunakan alias tabel (a, b, dst.) untuk menghindari ambiguous column names.
Property Opsional Tambahan (Additional Optional Properties)
Selain property dasar di atas, payload mendukung property lanjutan:
| Property | Fungsi |
|---|---|
fieldValidation | Validasi input deklaratif (required, pattern, format, min/max, dan lainnya) |
fieldNameLookup | Konfigurasi field id dan text untuk endpoint lookup |
viewQuery | Query khusus untuk endpoint read dan first |
masterDetail | Konfigurasi operasi composite (header + detail items) |
workflow | Konfigurasi state machine dan transisi status |
Detail setiap property lanjutan tersedia di halaman dokumentasi masing-masing di bagian Panduan Fitur.
Validasi Payload (Payload Validation)
Sebelum menjalankan generator, pastikan payload valid:
- Format JSON valid (tidak ada trailing comma, tanda kutip matching)
tableNamesesuai dengan nama tabel di databasefieldNameberisi semua kolom yang diperlukandatatablesQuerymeng-SELECT semua kolom yang ada difieldNamedatatablesWhereberisi kolom yang relevan untuk pencarian
Validasi format JSON dapat dilakukan melalui JSON validator online atau melalui VS Code yang secara otomatis menandai syntax error.