Setelah berhasil install Laravel 13 di episode #2, saatnya kita bahas konsep paling fundamental dalam web development: routing. Routing adalah mekanisme yang menghubungkan URL yang dikunjungi user dengan kode yang menjalankan aksi tertentu. Tanpa routing yang tepat, Laravel tidak akan tahu apa yang harus dilakukan ketika seseorang mengakses halaman website kamu.
Di bagian ini, kita akan mempelajari bagaimana routing bekerja di Laravel 13, konsep HTTP method, dan cara membuat route pertama kamu. Semuanya dirancang untuk pemula, jadi jangan khawatir jika ini terasa baru. Mari kita jelajahi dunia routing bersama-sama!
Apa Itu Routing?
Routing adalah proses mengarahkan HTTP request ke handler (controller atau closure function) yang tepat. Ketika kamu membuka browser dan mengetik URL seperti https://example.com/tentang, Laravel perlu tahu: "Siapa yang harus menangani request ini?" Itulah pekerjaan routing.
Bayangkan analogi dunia nyata: kamu adalah pengunjung yang datang ke hotel. Resepsionis (routing) melihat kebutuhan kamu, lalu mengarahkan ke departemen yang sesuai. Ingin membeli kopi? Ke kafe. Ingin istirahat? Ke kamar. Begitu juga dengan routing di Laravel — ia mengarahkan setiap request ke tempat yang tepat untuk diproses.
Di Laravel, semua route didefinisikan dalam satu file utama: routes/web.php. File ini adalah "peta" yang menunjukkan ke mana setiap URL harus pergi.
Anatomi File web.php
Ketika kamu membuka file routes/web.php setelah fresh install Laravel 13, kamu akan melihat sesuatu seperti ini:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return 'Selamat datang di Laravel 13!';
});
Mari kita breakdown struktur route paling sederhana ini:
- Route:: Class statik dari Laravel yang digunakan untuk mendaftar route
- get() — HTTP method (akan kita bahas detail di bagian selanjutnya)
- '/' — Path URL yang diakses (root/home)
- function() { } — Closure atau controller yang menjalankan aksi ketika route ini diakses
File web.php adalah tempat semua route untuk web application kamu disimpan. Laravel juga punya routes/api.php untuk API route, tapi kita fokus ke web dulu untuk pemula.
Jenis-Jenis HTTP Method di Laravel
HTTP adalah protokol yang digunakan browser dan server untuk berkomunikasi. Ada beberapa "cara" atau "method" untuk mengirim request, dan masing-masing punya tujuan berbeda. Laravel memudahkan kamu untuk handle method yang berbeda dengan syntax yang jelas.
Method yang paling sering dipakai:
- GET — Mengambil data. Ketika kamu membuka URL di browser atau klik link, itu GET request. Aman karena tidak mengubah data.
- POST — Mengirim data untuk disimpan. Ketika kamu submit form, biasanya itu POST request.
- PUT — Update data yang sudah ada (biasanya untuk form dengan method PUT/PATCH)
- DELETE — Menghapus data
Untuk referensi lengkap tentang HTTP methods, kamu bisa lihat di dokumentasi MDN.
Di Laravel, mendefinisikan route untuk method berbeda sangat mudah:
<?php
use Illuminate\Support\Facades\Route;
// GET request — mengambil halaman
Route::get('/artikel', function () {
return 'Daftar artikel';
});
// POST request — menyimpan data baru
Route::post('/artikel', function () {
return 'Artikel berhasil disimpan';
});
// PUT request — mengupdate data
Route::put('/artikel/1', function () {
return 'Artikel dengan ID 1 berhasil diupdate';
});
// DELETE request — menghapus data
Route::delete('/artikel/1', function () {
return 'Artikel dengan ID 1 berhasil dihapus';
});
Setiap method punya kegunaan spesifik. GET untuk retrieve, POST untuk create, PUT/PATCH untuk update, DELETE untuk delete. Inilah yang disebut RESTful convention — pola yang dipercaya di industri web development.
Route Parameter dan Named Route
Bayangkan kamu punya website blog dengan 100 artikel. Apakah kamu akan membuat 100 route berbeda? Tentu tidak! Solusinya adalah menggunakan route parameter — placeholder dinamis yang bisa berubah sesuai URL yang diakses.
Route parameter ditulis dalam kurung kurawal {}. Contoh:
<?php
use Illuminate\Support\Facades\Route;
// Route dengan parameter
Route::get('/artikel/{id}', function ($id) {
return "Menampilkan artikel dengan ID: " . $id;
});
// Route dengan multiple parameter
Route::get('/penulis/{penulis}/artikel/{id}', function ($penulis, $id) {
return "Artikel ID $id dari penulis $penulis";
});
// Named route — memberi nama pada route untuk kemudahan referensi
Route::get('/profil/{username}', function ($username) {
return "Profil: " . $username;
})->name('profil.show');
Dengan named route, kamu bisa generate URL dengan mudah menggunakan helper route(). Ini sangat berguna ketika membuat link di Blade template atau redirect:
<?php
// Di controller atau Blade template
echo route('profil.show', ['username' => 'budi']);
// Output: /profil/budi
// Redirect ke named route
return redirect()->route('profil.show', ['username' => 'budi']);
Named route adalah praktik baik karena jika kamu nanti mengubah URL path, kamu hanya perlu ubah di satu tempat — di route definition. Semua link yang menggunakan route() akan update otomatis.
Route Group dan Prefix
Ketika route kamu semakin banyak, mengorganisir menjadi penting. Salah satu cara adalah menggunakan route group dengan prefix. Misalnya, semua route admin kamu mungkin dimulai dengan /admin:
<?php
use Illuminate\Support\Facades\Route;
// Route group dengan prefix
Route::prefix('admin')->group(function () {
Route::get('/dashboard', function () {
return 'Admin Dashboard';
});
Route::get('/users', function () {
return 'Daftar Users';
});
});
// Hasil: /admin/dashboard dan /admin/users
Route group memudahkan organisasi route dan mencegah repetisi path yang sama berulang kali.
Latihan: Bikin 3 Route Pertama Kamu
Sekarang giliran kamu mempraktikkan! Buka file routes/web.php dan tambahkan 3 route berikut:
- Route GET untuk halaman Home
- Route GET untuk halaman About dengan parameter (nama)
- Route POST untuk form contact
Berikut contoh implementasinya:
<?php
use Illuminate\Support\Facades\Route;
// Home
Route::get('/', function () {
return 'Selamat datang di homepage!';
})->name('home');
// About dengan parameter
Route::get('/about/{nama}', function ($nama) {
return "Halo, nama saya $nama";
})->name('about');
// Contact form
Route::post('/contact', function () {
return 'Terima kasih, pesan Anda telah diterima';
})->name('contact.store');
Setelah kamu tambahkan, jalankan Laravel server dengan php artisan serve dan coba akses:
http://localhost:8000/— home routehttp://localhost:8000/about/John— about route dengan parameter- Contact route tidak bisa diakses langsung dari browser (POST method), butuh form HTML
Jika semua berjalan, berarti routing kamu sudah bekerja dengan baik!
Tips & Trik: Debugging Route
Kadang kamu ingin melihat semua route yang sudah terdaftar di aplikasi kamu. Laravel punya command handy untuk ini:
php artisan route:list
Command ini akan menampilkan tabel lengkap dengan semua route, method, path, dan handler-nya. Sangat berguna untuk debugging jika route kamu tidak bekerja seperti yang diharapkan.
Kesimpulan
Routing adalah fondasi dari setiap aplikasi Laravel. Dengan memahami konsep HTTP method, route parameter, dan named route, kamu sudah siap membuat route untuk berbagai keperluan. Ingat: route adalah "peta" yang mengarahkan setiap request ke handler yang tepat, sama seperti resepsionis yang mengarahkan tamu ke kamar mereka.
Di episode berikutnya (#4), kita akan belajar tentang Blade templating — cara membuat HTML dinamis di Laravel. Blade akan memudahkan kamu menampilkan data dari route ke browser dengan syntax yang elegan. Jangan lewatkan! Untuk referensi lebih detail tentang routing, kamu juga bisa baca dokumentasi resmi Laravel routing.