Response Helper

Fungsi-fungsi response helper NusaFramework untuk menghasilkan format JSON yang konsisten di seluruh API.

Referensi Fungsi

FungsiDeskripsi
resp_ok(data, pesan)Response sukses dengan data dan pesan
resp_error(pesan)Response error dengan pesan
resp_validasi(pesan, errors)Response error validasi dengan daftar errors
resp_paginasi(data, total, halaman)Response sukses dengan metadata paginasi
validasi(data, aturan)Validasi input dan kembalikan array error

resp_ok — Response Sukses

Penggunaan resp_ok
// Dengan data dan pesan
kembalikan resp_ok(data, "Berhasil")

// Dengan data saja (pesan default "Berhasil")
kembalikan resp_ok(data)

// Tanpa data (operasi berhasil)
kembalikan resp_ok(nihil, "Pengguna berhasil dihapus")
Response JSON
{
  "sukses": true,
  "pesan": "Berhasil",
  "data": { ... }
}

resp_error — Response Error

Penggunaan resp_error
kembalikan resp_error("Token tidak valid atau kedaluwarsa")
kembalikan resp_error("Pengguna tidak ditemukan")
kembalikan resp_error("Email sudah digunakan")
Response JSON
{
  "sukses": false,
  "pesan": "Token tidak valid atau kedaluwarsa",
  "data": null
}

resp_validasi — Error Validasi

Penggunaan resp_validasi
buat body = body_json(req)

// Validasi field
buat errors = validasi(body, {
    "nama"  : "wajib|min:2|maks:100",
    "email" : "wajib|email",
    "sandi" : "wajib|min:8"
})

// Jika ada error, kembalikan respons validasi
jika panjang(errors) > 0 {
    kembalikan resp_validasi("Data tidak valid", errors)
}
Response JSON
{
  "sukses": false,
  "pesan": "Data tidak valid",
  "errors": [
    "Field 'nama' wajib diisi",
    "Field 'email' harus berupa email valid"
  ]
}

Aturan Validasi yang Tersedia

AturanDeskripsiContoh
wajibField tidak boleh kosong"wajib"
min:NMinimal N karakter"min:8"
maks:NMaksimal N karakter"maks:100"
emailHarus format email valid"email"

Kombinasikan dengan |: "wajib|email|maks:100"

resp_paginasi — Response Berpaginasi

Penggunaan resp_paginasi
buat data        = Model_semua("Produk", "id DESC")
buat total       = Model_hitung("Produk")
buat halaman     = ke_bilangan(param_query(req, "halaman"))
buat per_halaman = 20

jika halaman == 0 { halaman = 1 }

kembalikan resp_paginasi(data, total, halaman, per_halaman)
Response JSON
{
  "sukses": true,
  "data": [...],
  "meta": {
    "total": 85,
    "halaman": 1,
    "per_halaman": 20,
    "total_halaman": 5
  }
}