Skip to main content
← Semua tulisan
TutorialDiterbitkan 15 Juli 20263 menit baca

Membangun REST API CodeIgniter yang Aman dan Rapi

Praktik membangun REST API dengan CodeIgniter: struktur endpoint, autentikasi, validasi input, error handling, dan performa dasar.

CodeIgniterPHPREST APISecurity
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:

  1. validasi tipe dan panjang field;
  2. tolak payload yang tidak dikenal bila memungkinkan;
  3. sanitasi output untuk mencegah injection di lapisan yang relevan;
  4. batasi ukuran upload dan rate request.

Error handling yang konsisten

Client harus bisa mengandalkan format error yang sama.

Contoh prinsip:

  • 400 untuk input invalid;
  • 401/403 untuk masalah auth/izin;
  • 404 jika resource tidak ada;
  • 429 saat rate limit;
  • 500 untuk 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:

  1. uji happy path dan validasi gagal;
  2. uji token expired/invalid;
  3. uji pagination dan filter;
  4. pastikan CORS hanya membuka origin yang dibutuhkan;
  5. 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.