
Pendahuluan
Bayangin lagi ngerjain fitur sederhana, tapi saat data dari database dikirim langsung lewat JSON, strukturnya berantakan dan field internal malah ikut terbawa ke frontend. Awalnya saya juga sering pake cara konvensional lewat method toArray() langsung di model, tapi makin lama project makin gede, kode malah jadi spaghetti dan susah di-maintain. Di sinilah API Resources Laravel jadi penyelamat hidup.
Tips & Best Practices
Di banyak project, biasanya saya mulai dengan memisahkan logic response dari model agar model tetap bersih dan fokus pada database saja. Kalau project udah mulai kompleks, saya selalu membagi resource per kebutuhan, misalnya UserResource untuk profil publik dan AdminUserResource untuk internal supaya data sensitif nggak bocor. Selain itu, saya sering pake Data Wrapping biar struktur JSON konsisten, jadi frontend nggak bingung tiap kali ada update API.
Contoh Kode
Saya biasanya bikin resource pakai php artisan make:resource UserResource, lalu di dalamnya saya definisikan field yang cuma mau ditampilin:
public function toArray($request) { return [ 'id' => $this->id, 'nama_lengkap' => $this->name, 'email_kontak' => $this->email, 'dibuat_pada' => $this->created_at->format('d M Y'), ]; }Variasi Implementasi
Tergantung kebutuhan, kadang saya pake JsonResource::collection() kalau datanya banyak, atau pakai additional() kalau perlu kirim metadata tambahan seperti status atau pesan sukses secara dinamis. Bedanya dengan return array biasa adalah resource ini bisa nanganin relasi secara otomatis lewat $this->whenLoaded(), jadi nggak bakal kena masalah N+1 query yang bikin aplikasi lemot.
Kesalahan Umum
1. Lupa pake whenLoaded() yang bikin query database malah meledak karena relasi di-load terus. 2. Memasukkan terlalu banyak logic hitungan di dalam resource, padahal seharusnya di service layer. 3. Enggak pake resource collection, jadi response-nya nggak konsisten antara single object dan list. 4. Menaruh data sensitif seperti password_hash karena buru-buru, padahal cuma perlu filter field tertentu. 5. Terlalu banyak bikin resource buat hal yang sepele, akhirnya malah bikin folder project kepenuhan file yang jarang dipake.
Ringkasan
Intinya, API Resources itu bukan cuma soal rapiin JSON, tapi soal gimana kita ngebangun kontrak data yang stabil antara backend dan frontend. Setelah terbiasa, saya nggak bisa balik lagi ke cara lama, karena hidup jadi jauh lebih tenang pas frontend ngasih tau kalau ada perubahan field—tinggal edit satu file resource, kelar deh.
Komentar
Posting Komentar