Skip to main content

API Cookbook

Panduan ini fokus ke pola implementasi endpoint yang paling sering dipakai di Customa.

Prasyarat cepat

ItemNilai / contoh
Base URL localhttp://localhost
Auth mode utamaSession (web) + token (sanctum) sesuai route group
Header JSONAccept: application/json, Content-Type: application/json
Cek daftar endpoint/docs/api-catalog

Resep 1 — Login lalu panggil endpoint protected

1) Login

curl -i -X POST "http://localhost/login" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"secret"}'
curl -i "http://localhost/api/v1/memberships" \
-H "Accept: application/json" \
-H "Authorization: Bearer <access_token>"

Checklist debug jika 401/403

CheckCara cekAksi
Middleware guardLihat file route API/webSamakan mekanisme login dengan guard
Token expiredDecode expiry / cek waktu loginRe-login dan retry
Scope/role tidak cukupCek policy + role userNaikkan role atau pakai akun yang benar

Resep 2 — Pagination + filter konsisten

Contoh query standar:

?page=1&per_page=20&sort=-created_at&status=active
ParameterFungsiRekomendasi
pagenomor halamandefault 1
per_pagejumlah per halaman10–50 untuk UI
sorturutan dataprefix - untuk descending
status / filter lainnarrowing datavalidasi allowlist di controller

Resep 3 — Buat data + rollback aman saat gagal

Alur aman untuk endpoint create/update:

  1. Validasi request (FormRequest).
  2. Bungkus write operation dengan DB transaction.
  3. Tangani exception dengan response JSON konsisten.
  4. Logging error pakai correlation id.

Template respons error:

{
"success": false,
"message": "Validation failed",
"errors": {
"field": ["The field is required."]
},
"trace_id": "req_01H..."
}

Resep 4 — Idempotency untuk endpoint sensitif (checkout/booking)

Gunakan header Idempotency-Key untuk mencegah duplikasi request saat retry dari client.

SkenarioRisiko tanpa idempotencyMitigasi
User klik submit berulangdouble insert/order gandasimpan key + hash payload, return response lama
Network timeout lalu retrydata dobeltreat key yang sama sebagai request sama

Resep 5 — Standarisasi observability endpoint

Minimum log fields per request:

FieldKegunaan
trace_idkorelasi antar service/log
route + methodidentifikasi endpoint
status_codeklasifikasi sukses/gagal
latency_msbaseline performa
actor_id (jika ada)audit akses

Lanjutkan ke: