Definisi Controller
Controller (pengendali) adalah komponen perangkat lunak atau perangkat keras yang bertanggung jawab mengatur alur data antara tampilan (view) dan logika bisnis (model). Dalam arsitektur ModelViewController (MVC), controller berperan sebagai perantara yang menerima permintaan pengguna, memprosesnya, dan menentukan data apa yang harus ditampilkan.
Fungsi Utama Controller
- Menerima Input Menangkap permintaan dari pengguna, baik berupa klik tombol, input form, atau panggilan API.
- Memvalidasi Data Memastikan data yang masuk sesuai format dan kebijakan bisnis.
- Berinteraksi dengan Model Memanggil fungsi pada model untuk mengambil, menyimpan, atau memodifikasi data.
- Mengirimkan Respons Menyiapkan data yang akan ditampilkan pada view atau mengembalikan format JSON/XML untuk API.
Jenisjenis Controller
Berbagai platform atau framework memiliki tipe controller yang berbeda, antara lain:
- Web Controller Digunakan dalam aplikasi web (misalnya Laravel, Spring MVC, ASP.NET). Mengelola rute URL dan menghasilkan halaman HTML atau data JSON.
- API Controller Fokus pada layanan RESTful, biasanya mengembalikan data dalam format JSON tanpa melibatkan tampilan.
- Mobile Controller Pada aplikasi seluler (misalnya Android dengan MVVM/MVP) berperan menghubungkan UI dengan logika bisnis.
- Game Controller Pada pengembangan game, controller mengatur logika permainan, input pemain, dan alur keadaan permainan.
Contoh Sederhana (PHP Laravel)
validate([ 'title' => 'required|max:255', 'body' => 'required', ]); Post::create($validated); return redirect()->route('posts.index'); }} Di contoh di atas, PostController menangani dua aksi: menampilkan daftar posting dan menyimpan posting baru. Semua logika akses data berada di model Post, sedangkan tampilan berada di file blade posts/index.blade.php.
Keuntungan Menggunakan Controller
- Pemisahan Tanggung Jawab Membuat kode lebih terstruktur, memudahkan pemeliharaan.
- Reusabilitas Logika yang sama dapat dipanggil dari berbagai rute atau endpoint.
- Testing Lebih Mudah Controller dapat diuji secara unit atau integrasi tanpa melibatkan UI.
- Skalabilitas Memungkinkan penambahan fitur baru tanpa mengganggu kode yang sudah ada.
Prinsip Penulisan Controller yang Baik
- Keep It Small Setiap aksi (method) sebaiknya hanya melakukan satu hal utama.
- Gunakan Service/Repository Pindahkan logika bisnis berat ke kelas terpisah.
- Validasi di Satu Tempat Manfaatkan request class atau validator terpusat.
- Jangan Tulis HTML di Controller Serahkan rendering kepada view atau template engine.
- Documentasikan Rute Sertakan komentar yang menjelaskan tujuan tiap method.
Kesimpulan
Controller adalah jantung arsitektur MVC yang menjembatani antara pengguna dan logika aplikasi. Dengan menempatkan tugas-tugas seperti pengolahan input, validasi, interaksi model, dan penyajian respons pada controller, kita memperoleh kode yang bersih, mudah dipelihara, dan siap berkembang. Memahami peran dan cara menulis controller yang efektif menjadi langkah penting bagi setiap pengembang yang ingin membangun aplikasi yang terstruktur dengan baik.
Referensi lebih lanjut: Laravel Controllers, Spring MVC, Android Architecture Components.
