Routing di Laravel: Panduan Lengkap dengan Contoh Kode
Routing adalah pintu masuk semua request di Laravel. Sebelum request sampai ke controller atau logika apapun, dia harus melewati router dulu. Memahami cara kerja routing akan membuat kamu lebih mudah membangun struktur aplikasi yang rapi dan mudah di-maintain.
Konsep Dasar: Bagaimana Request Diproses
Saat browser mengirim request ke GET /posts, Laravel membaca file routes/web.php, mencari route yang cocok, lalu meneruskan ke handler yang ditentukan. Urutan ini tidak bisa dibalik.
Bentuk route paling sederhana:
// routes/web.php
Route::get('/posts', function () {
return 'Daftar semua post';
});
// Atau langsung ke controller
Route::get('/posts', [PostController::class, 'index']);
HTTP Method yang Tersedia
Route::get('/posts', [PostController::class, 'index']);
Route::post('/posts', [PostController::class, 'store']);
Route::put('/posts/{id}', [PostController::class, 'update']);
Route::patch('/posts/{id}', [PostController::class, 'update']);
Route::delete('/posts/{id}', [PostController::class, 'destroy']);
Kalau mau handle lebih dari satu method sekaligus:
Route::match(['get', 'post'], '/form', [FormController::class, 'handle']);
Route::any('/webhook', [WebhookController::class, 'receive']);
Route Parameter
Parameter wajib — request harus menyertakan nilai ini:
Route::get('/users/{id}', function (string $id) {
return "User ID: $id";
});
// Bisa langsung inject model (Route Model Binding)
Route::get('/users/{user}', function (User $user) {
return $user; // otomatis cari User::find($id)
});
Parameter opsional — tambahkan ? dan nilai default:
Route::get('/posts/{slug?}', function (string $slug = 'semua') {
return "Slug: $slug";
});
Tambahkan constraint untuk validasi parameter:
Route::get('/users/{id}', [UserController::class, 'show'])
->where('id', '[0-9]+'); // hanya menerima angka
Route::get('/posts/{slug}', [PostController::class, 'show'])
->where('slug', '[a-z0-9-]+');
Named Route
Named route memudahkan generate URL di dalam kode, tidak perlu hardcode string URL:
Route::get('/posts/{id}', [PostController::class, 'show'])
->name('posts.show');
// Generate URL dari nama
$url = route('posts.show', ['id' => 5]);
// Hasil: http://app.test/posts/5
// Redirect ke named route
return redirect()->route('posts.show', ['id' => 5]);
Route Group
Grup route berguna untuk menerapkan prefix, middleware, atau namespace secara serentak:
// Grup dengan prefix URL
Route::prefix('admin')->group(function () {
Route::get('/dashboard', [AdminController::class, 'dashboard']);
Route::get('/users', [AdminController::class, 'users']);
// Accessible di: /admin/dashboard, /admin/users
});
// Grup dengan middleware
Route::middleware(['auth'])->group(function () {
Route::get('/profile', [ProfileController::class, 'show']);
Route::get('/settings', [SettingController::class, 'index']);
});
// Kombinasi keduanya
Route::middleware(['auth'])->prefix('dashboard')->group(function () {
Route::get('/overview', [DashboardController::class, 'overview']);
});
Resource Route
Satu baris untuk membuat 7 route CRUD sekaligus:
Route::resource('posts', PostController::class);
Ini setara dengan:
GET /posts → index
GET /posts/create → create
POST /posts → store
GET /posts/{post} → show
GET /posts/{post}/edit → edit
PUT /posts/{post} → update
DELETE /posts/{post} → destroy
Kalau tidak butuh semua route:
// Hanya route tertentu
Route::resource('posts', PostController::class)
->only(['index', 'show']);
// Kecualikan route tertentu
Route::resource('posts', PostController::class)
->except(['create', 'edit']);
Melihat Semua Route yang Terdaftar
php artisan route:list
# Filter berdasarkan nama
php artisan route:list --name=posts
# Filter berdasarkan method
php artisan route:list --method=GET
Route Caching untuk Production
Di production, cache route agar lebih cepat:
php artisan route:cache
# Hapus cache (jalankan setelah ubah routes/)
php artisan route:clear
Baca juga: Membuat Controller di Laravel 12 dan Invokable Controller di Laravel.
Kalau kamu butuh tim untuk membangun aplikasi Laravel dari arsitektur awal sampai deployment, lihat layanan pengembangan aplikasi kami.
Artikel Lainnya di Kategori Laravel
Laravel 9 November 2025
Invokable Controller di Laravel: Cara Kerja, Contoh Kode, dan Kapan Memakainya
Ada satu fitur Laravel yang sering dilewatkan developer pemula: invokable controller. Padahal kalau dipakai di tempat yang tepat, kode jadi lebih bersih dan lebih mudah dibaca. Artikel ini menjelaskan apa itu invokable controller, kapan sebaiknya dipakai, dan bagaimana cara implementasinya di Laravel 12. Apa Itu Invokable Controller? Invokable controller adalah controller yang hanya punya satu […]
Baca Artikel9 November 2025
Cara Instalasi Laravel Volt di Laravel 12: Via Breeze dan Livewire Langsung
Laravel Volt sudah termasuk dalam Livewire v3, jadi cara installnya lebih mudah dari yang Anda bayangkan. Artikel ini membahas dua jalur instalasi: lewat Laravel Breeze, dan langsung lewat Livewire. Prasyarat PHP 8.1 atau lebih baru Laravel 10 ke atas (disarankan Laravel 12) Composer Jalur 1: Install via Laravel Breeze Ini jalur paling umum. Breeze menyediakan […]
Baca Artikel9 November 2025
Keunggulan Laravel Volt: Mengapa Single-File Component Lebih Efisien
Setelah cukup banyak pakai Livewire biasa, saya coba beralih ke Volt di salah satu proyek internal. Hasilnya memang ada perbedaan yang terasa, terutama saat nambah fitur baru atau onboarding developer junior ke proyek. Artikel ini membahas keunggulan nyata Laravel Volt dibanding cara penulisan Livewire sebelumnya, lengkap dengan contoh kode perbandingan. 1. Single-File Component: Logika dan […]
Baca ArtikelIngin Membaca Artikel Lainnya?
Temukan lebih banyak insight dan tips tentang teknologi dan bisnis digital.
Lihat Semua Artikel