Membangun REST API yang Mudah Dikembangkan dengan Laravel
Setelah membangun puluhan API dengan Laravel di berbagai proyek, saya ingin berbagi pola dan strategi yang terbukti bekerja di produksi. Bukan teori — ini dari pengalaman langsung.
Struktur Folder yang Bersih
Salah satu kesalahan umum adalah menaruh semua logika di Controller. Saya menggunakan pola Repository-Service-Controller:
- Controller: Hanya menangani request/response HTTP dan validasi input
- Service: Logika bisnis — semua aturan bisnis ada di sini
- Repository: Query basis data — abstraksi dari Eloquent/raw query
Dengan pola ini, unit test menjadi jauh lebih mudah dan kode lebih mudah digunakan ulang.
Autentikasi dengan JWT
Untuk API stateless, saya menggunakan JWT (JSON Web Token) dengan package tymon/jwt-auth. Beberapa tips penting:
- Atur masa berlaku token secara wajar (biasanya 1 jam untuk access token)
- Implementasikan refresh token untuk pengalaman pengguna yang lebih baik
- Simpan data sensitif di environment variable, bukan di kode
Respons Konsisten
Salah satu hal yang membuat pengembang antarmuka senang adalah respons API yang konsisten. Saya selalu menggunakan format:
{
"success": true,
"message": "Data berhasil diambil",
"data": { ... },
"meta": { "page": 1, "total": 100 }
}
Strategi Caching
Untuk endpoint yang sering dipanggil dengan data yang jarang berubah, caching bisa memberi dampak besar. Laravel menyediakan abstraksi cache yang mudah digunakan dengan Redis atau Memcached.
Aturan sederhana yang saya pakai: cache data yang proses pengambilannya mahal (join banyak tabel, API eksternal) dan hapus cache ketika data berubah.
Pembatasan Request
Jangan lupa lindungi API Anda dari penyalahgunaan. Laravel punya fitur rate limiting bawaan yang mudah dikonfigurasi di RouteServiceProvider. Untuk API publik, saya biasanya mengatur 60 request per menit per IP.
Kesimpulan
Membangun API yang mudah dikembangkan bukan tentang alat yang paling canggih, tapi tentang konsistensi dalam arsitektur dan kebiasaan yang baik sejak awal. Laravel memberikan semua yang Anda butuhkan — tinggal bagaimana Anda memanfaatkannya.