Kurnia Andi Nugroho
Halo, teman-teman developer!
Pada kesempatan kali ini, mari kita bahas salah satu folder yang terlihat “sepele” tapi punya peran sangat krusial dalam aplikasi Laravel, yaitu folder routes
. Bagi yang baru belajar Laravel atau yang sudah lama berkutat tapi belum mendalami arsitektur Laravel secara utuh, bisa jadi bagian ini masih sering diabaikan. Padahal, folder inilah yang menjadi pengatur lalu lintas semua request yang masuk ke aplikasi kita.
Bayangkan Laravel seperti sebuah kota. Nah, folder routes
ini adalah peta jalan yang mengarahkan kendaraan (request dari user) menuju tempat tujuan (controller atau closure function).
routes
Secara default, folder routes
berada langsung di root direktori Laravel. Di dalamnya, Laravel menyediakan beberapa file utama:
web.php
api.php
console.php
Masing-masing file ini memiliki tanggung jawab tersendiri, sesuai dengan jenis rute (route) yang akan kita buat. Mari kita ulas satu per satu dengan santai, seperti kita lagi ngopi bareng di kelas sore.
web.php
: Untuk Rute Web (Dengan Middleware Session dan CSRF)File web.php
ini adalah rumah bagi semua rute yang bersifat interaktif dengan browser. Jadi, kalau teman-teman membuat halaman dashboard, form login, atau tampilan produk, rute-rutenya biasanya ditulis di sini.
Laravel secara otomatis memberikan middleware web
ke file ini, yang artinya setiap rute yang teman-teman daftarkan akan memiliki dukungan session, cookie, dan CSRF protection.
Contoh sederhana:
Route::get('/', function () {
return view('welcome');
});
Kalau teman-teman pakai controller:
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Jadi, bisa dibilang web.php
adalah titik awal untuk aplikasi yang tampilannya ditujukan ke manusia (bukan API atau mesin).
api.php
: Untuk Rute API (Stateless)Berbeda dengan web.php
, file api.php
digunakan ketika kita ingin membuat layanan API, misalnya untuk dikonsumsi oleh aplikasi mobile atau frontend berbasis Vue/React.
Laravel memberikan middleware api
, yang sifatnya stateless. Artinya, tidak ada session atau cookie yang disimpan di server. Komunikasi biasanya menggunakan token atau header tertentu.
Contoh:
Route::get('/users', [UserController::class, 'index']);
Secara default, semua rute di api.php
akan memiliki prefix /api
. Jadi kalau kita akses rute di atas, URL-nya akan menjadi:
http://localhost:8000/api/users
console.php
: Untuk Rute Console (Artisan Command)File ini mungkin agak jarang disentuh kecuali teman-teman membuat command kustom di Laravel. Isinya bukan rute HTTP, melainkan perintah console yang bisa teman-teman jalankan lewat terminal.
Misalnya, teman-teman ingin membuat command untuk menghapus file sementara, atau mengirim notifikasi otomatis tiap malam. teman-teman bisa definisikan di sini.
Contoh:
Artisan::command('salam', function () {
$this->info('Halo semua, semangat ngoding!');
});
Kalau teman-teman jalankan:
php artisan salam
Maka akan muncul output Halo semua, semangat ngoding!
di terminal.
Seiring bertambahnya fitur aplikasi, file web.php
dan api.php
bisa tumbuh liar seperti hutan tropis. Oleh karena itu, berikut beberapa tips ala dosen ngoding:
Gunakan prefix
, middleware
, dan namespace
untuk membuat rute lebih rapi:
Route::prefix('admin')->middleware(['auth', 'is_admin'])->group(function () {
Route::get('/dashboard', [AdminDashboardController::class, 'index']);
});
Kalau sudah sangat kompleks, teman-teman bisa membagi rute ke dalam file terpisah, lalu daftarkan dari RouteServiceProvider
.
Misalnya: routes/admin.php
, routes/user.php
, lalu daftarkan di boot()
:
Route::middleware('web')
->group(base_path('routes/admin.php'));
name
)Dengan memberi nama, teman-teman bisa memanggil rute dengan lebih aman dan fleksibel:
Route::get('/profile', [ProfileController::class, 'index'])->name('profile');
Kemudian bisa dipanggil dengan route('profile')
.
Folder routes
pada Laravel adalah pusat pengaturan arah semua request dalam aplikasi. Dengan memahami cara kerja file-file seperti web.php
, api.php
, console.php
, dan channels.php
, teman-teman akan lebih mudah membangun aplikasi yang rapi, scalable, dan enak dirawat.
Ingat, Laravel itu ibarat kereta cepat: cepat, powerful, tapi tetap butuh rel yang rapi. Dan relnya adalah route-route yang teman-teman buat dengan penuh pertimbangan.
Semoga artikel ini bisa membantu teman-teman lebih paham dan tidak lagi menganggap file routes/web.php
sebagai tempat curhat semua rute hehehehe.
Kurnia Andi Nugroho
Web & Mobile App Developer, Laravel, Inertia, Vue.Js, React.Js
Founder of Lagikoding.com Laravel Enthusiast & Web Developer