Langsung ke konten
Kuskuskuy JournalTeknologi yang bisa dipakai. Kuskuskuy.com
Langsung ke isi artikel

Cara Membuat REST API CodeIgniter 4: Panduan Praktis

Pelajari cara membuat REST API CodeIgniter 4 dari routing resource, controller, model, validasi, response JSON, sampai pengujian endpoint.

Cara Membuat REST API CodeIgniter 4: Panduan Praktis

Membuat API sendiri terdengar rumit kalau langsung melihat istilah endpoint, HTTP method, controller, model, dan JSON. Padahal alurnya bisa dipecah: tentukan resource, buat route, hubungkan controller ke model, validasi input, lalu uji setiap response. Panduan ini membahas cara membuat REST API CodeIgniter 4 memakai resource buku yang bisa diadaptasi ke katalog produk atau modul lain.

Contoh mengikuti dokumentasi resmi CodeIgniter 4. Nama tabel dan field hanya contoh latihan. Kerjakan di development, siapkan backup, dan jangan bawa contoh ini langsung ke fitur payment atau auth. πŸ’‘

πŸ” REST API CodeIgniter 4 itu apa?

REST API menyediakan data dan operasi melalui endpoint. Client mengirim request memakai HTTP method seperti GET, POST, PUT, atau DELETE. Server memproses request lalu mengembalikan response, biasanya JSON.

Untuk resource books: GET /api/books mengambil daftar, GET /api/books/7 mengambil satu data, POST /api/books membuat data, PUT /api/books/7 memperbarui, dan DELETE /api/books/7 menghapus. URL mewakili resource; method menjelaskan operasi.

βš™οΈ Prasyarat

Siapkan project CodeIgniter 4 yang berjalan, PHP sesuai requirement project, database, dan tabel resource. Pahami dasar routing, controller, model, migrasi, HTTP status code, dan JSON. cURL atau Postman membantu pengujian, tetapi browser cukup untuk request GET.

Pastikan konfigurasi database berada di environment benar. Jangan memasukkan password database, API key, atau data pelanggan ke contoh kode dan repository. Buat checkpoint Git sebelum menambah endpoint.

🧱 Buat controller API

CodeIgniter menyediakan ResourceController sebagai titik awal API resource. Buat controller dengan php spark make:controller Api/Books. Set properti modelName ke App\Models\BookModel dan format ke json. Method index() dapat mengembalikan $this->respond($this->model->findAll()), sedangkan show($id) mencari data lalu memakai failNotFound('Book not found') saat data tidak ada.

Helper response mengurangi boilerplate. Tinjau field sebelum mengembalikan data agar kolom internal tidak bocor.

πŸ—ΊοΈ Atur resource route

Tambahkan di app/Config/Routes.php: $routes->resource('books', ['controller' => 'Api\Books']);. Route resource membuat route umum untuk index, show, create, update, dan delete. Urutan route penting. Route spesifik sebaiknya ditempatkan sebelum route resource jika berpotensi bertabrakan.

Batasi route memakai opsi only atau except. Jangan membuka operasi delete jika aplikasi tidak memerlukannya.

🧩 Siapkan model

Model perlu menetapkan tabel, primary key, return type, dan field yang boleh diisi. Contoh: protected $table = 'books'; protected $primaryKey = 'id'; protected $allowedFields = ['title', 'year', 'author_id']; protected $returnType = 'array';. allowedFields mencegah input client mengubah kolom sensitif. Jangan masukkan is_admin, saldo, status pembayaran, atau pemilik data jika field itu harus ditentukan server.

βœ… Validasi input

API tidak boleh menganggap input client benar. Ambil JSON dengan $this->request->getJSON(true), lalu validasi memakai rules seperti title => required|string|max_length[255] dan year => required|integer. Jika validateData() gagal, kembalikan failValidationErrors($this->validator->getErrors()). Setelah valid, simpan data dan kembalikan respondCreated().

Sesuaikan rules dengan kebutuhan bisnis. Validasi JavaScript saja tidak cukup karena request bisa dikirim langsung ke endpoint.

πŸ§ͺ Uji endpoint

Mulai dengan curl -i https://domainmu.test/api/books. Uji data tidak ditemukan, input invalid, pembuatan, pembaruan, dan penghapusan di development. Periksa status HTTP, struktur JSON, nama field, tipe data, content type, dan kebocoran informasi. Buat test untuk happy path dan error path.

Response sukses mengambil data umumnya 200 OK, pembuatan data 201 Created, dan resource tidak ada 404 Not Found. Status validasi mengikuti implementasi aplikasi; client perlu mendapat error terstruktur dan konsisten.

πŸ” Keamanan API

Endpoint publik membutuhkan authentication dan authorization. Bedakan user yang boleh membaca, mengubah, atau menghapus. Tambahkan rate limiting, logging, validasi payload, dan HTTPS. Jangan menaruh secret di URL karena URL bisa masuk log.

Endpoint file, webhook, atau pembayaran memerlukan pemeriksaan signature dan batas ukuran. Jangan memakai contoh buku sebagai pola langsung untuk fitur sensitif. Payment, auth, dan data pelanggan perlu desain serta pengujian khusus.

πŸ› οΈ Troubleshooting

  • 404: cek route, namespace controller, URL, dan php spark routes.
  • HTML bukan JSON: cek exception, format controller, dan environment.
  • Field hilang: cek allowedFields dan nama field request.
  • Data gagal tersimpan: cek validasi, database, tipe kolom, dan log.
  • Method ditolak: cek method client dan route yang dibuka.

πŸ“Œ Checklist

  • URL dan resource konsisten.
  • Route hanya membuka operasi perlu.
  • Model memakai allowedFields.
  • Input divalidasi server.
  • Response sukses dan error terstruktur.
  • Authentication dan authorization diuji.
  • Test mencakup valid, invalid, kosong, dan not found.
  • Log tidak menyimpan secret.

Kalau kamu belajar PHP atau CodeIgniter dari source code, Kuskuskuy punya referensi project untuk dibedah per modul. Mulai dari satu alur kecil, pahami route sampai database, lalu uji perubahan sebelum memperluas fitur.

πŸš€ Kesimpulan

Cara membuat REST API CodeIgniter 4 bertumpu pada resource route, controller, model, validasi, dan pengujian. ResourceController mengurangi boilerplate, tetapi kualitas API tetap bergantung pada desain data, kontrol akses, dan test.

Baca panduan deploy CodeIgniter 4 ke hosting setelah aplikasi siap dipindahkan. Untuk pemeriksaan lanjutan, gunakan checklist keamanan website. πŸ’‘

Sumber

[1] CodeIgniter 4 β€” RESTful Resource Handling.

[2] CodeIgniter 4 β€” Building a RESTful Controller.

[3] CodeIgniter 4 β€” Validation.

Featured image: Web API diagram.svg, karya I.hate.spam.mail.here, Wikimedia Commons, CC0 1.0. Visual Mode: diagram/infografik.