
Membangun REST API CodeIgniter yang Aman dan Rapi
Praktik membangun REST API dengan CodeIgniter: struktur endpoint, autentikasi, validasi input, error handling, dan performa dasar.
Daftar isi
Banyak produk digital masih mengandalkan REST API berbasis PHP. CodeIgniter tetap relevan untuk API internal, mobile backend, dan integrasi antar sistem—asalkan strukturnya disiplin.
Artikel ini merangkum praktik yang saya terapkan agar API mudah dirawat dan lebih aman.
Rancang kontrak API sebelum coding
Sebelum menulis controller:
- tentukan resource dan verb HTTP (
GET,POST,PUT/PATCH,DELETE); - sepakati format response sukses dan gagal;
- dokumentasikan field wajib, opsional, dan tipe datanya;
- tentukan versi API sejak awal (
/api/v1/...).
Kontrak yang jelas mengurangi bolak-balik antara frontend dan backend.
Struktur folder yang bisa tumbuh
Pisahkan tanggung jawab:
- Controller hanya menerima request dan mengembalikan response;
- Service/Model menangani logika bisnis dan query;
- Filter/Middleware untuk auth, rate limit, dan CORS;
- Validation terpusat untuk input.
Hindari controller “god class” yang berisi query, validasi, dan formatting sekaligus.
Autentikasi yang realistis
Untuk API publik atau mobile:
- gunakan token berbasis standar (misalnya JWT atau token opaque dengan expiry);
- jangan kirim kredensial sensitif di query string;
- rotasi secret dan cabut token saat logout/compromise;
- bedakan scope permission bila ada lebih dari satu peran.
Untuk API internal antar service, pertimbangkan API key + IP allowlist sebagai lapisan tambahan.
Validasi input adalah keamanan pertama
Anggap semua input tidak tepercaya.
Minimal:
- validasi tipe dan panjang field;
- tolak payload yang tidak dikenal bila memungkinkan;
- sanitasi output untuk mencegah injection di lapisan yang relevan;
- batasi ukuran upload dan rate request.
Error handling yang konsisten
Client harus bisa mengandalkan format error yang sama.
Contoh prinsip:
400untuk input invalid;401/403untuk masalah auth/izin;404jika resource tidak ada;429saat rate limit;500untuk error tak terduga tanpa membocorkan stack trace ke produksi.
Sertakan code dan message yang bisa dibaca manusia, plus request_id jika perlu tracing.
Performa dasar yang sering dilupakan
API terasa lambat bukan hanya karena query berat.
Cek juga:
- N+1 query pada relasi;
- index database untuk filter/sort yang sering dipakai;
- pagination default (jangan biarkan
SELECT *tanpa batas); - caching untuk data referensi yang jarang berubah.
Logging dan observasi
Tanpa log, debugging produksi menjadi tebak-tebakan.
Catat:
- endpoint, status code, dan latency;
- identitas client (tanpa menyimpan secret);
- error exception di sisi server dengan konteks cukup.
Checklist rilis API
Sebelum deploy:
- uji happy path dan validasi gagal;
- uji token expired/invalid;
- uji pagination dan filter;
- pastikan CORS hanya membuka origin yang dibutuhkan;
- matikan debug mode di production.
Kesimpulan
REST API CodeIgniter yang baik bukan soal framework-nya, melainkan kontrak jelas, validasi ketat, auth yang masuk akal, error konsisten, dan performa yang diukur. Dengan fondasi itu, menambah endpoint baru jauh lebih aman dan cepat.