Laravel Tutorial #5 : Laravel Routing
Laravel merupakan sebuah framework web development yang memanfaatkan design pattern dengan menggunakan MVC yang merupakan singkatan dari Model View Controller. Dalam hal ini Laravel akan menyediakan fitur Routing atau pengaturan rute apakah sebuah permintaan dari pengguna melalui pengetikan halaman akan diteruskan ke View atau Controller tertentu. Modul ini akan membahas mengenai MVC pada Laravel serta juga membahas mengenai penggunaan Routing sederhana di Laravel.
MVC di Laravel
Seperti disebutkan sebelumnya, Laravel menggunakan MVC sebagai design pattern dari frameworknya. Dalam hal ini akan tersedia Model, View, dan Controller. Model akan berisi dengan struktur data termasuk dengan database yang dipergunakan dalam project. View akan berfungsi untuk mengatur tampilan yang akan diperlihatkan di layar pengguna pada saat sebuah halaman web diakses. Controller sendiri akan berisi logicatau bagian program yang mengatur akses ke database ataupun berbagai fungsi pemrograman lainnya.
Gambar di bawah menggambarkan bagaimana alur kerja MVC pada Laravel. Pada saat pengguna mengetikkan alamat web atau url, maka Routes akan melakukan proses pengaturan melalui Controller. Apabila dibutuhkan akses ke database, maka Controller akan terlebih dahulu berkomunikasi melalui model untuk mengakses database. Sebaliknya apabila tidak dibutuhkan atau setelah proses komunikasi dengan model selesai, maka hasilnya akan ditampilkan pada View.
Jadi apa itu router? Secara sederhana, router adalah komponen yang kita gunakan untuk mengarahkan request kita untuk mendapat response yang kita inginkan. Response-nya bisa dalam bentuk view ataupun data dalam bentuk JSON dan XML.
Dari pernyataan diatas, akan muncul pertanyaan bagaimana kita mengirimkan request. Untuk setiap request dikirimkan melalui menggunakan Hypertext Transfer Protocol (HTTP). Untuk mengirim request melalui HTTP kita akan menggunakan Uniform Resource Locator (URL). Jika kita perhatikan gambar diatas, URL yang kita akses dari browser akan ditangani oleh router.
Karena kita akan menggunakan HTTP, ada baiknya jika kita kenal dulu dengan HTTP Verbs. HTTP Verbs adalah metode-metode yang kita gunakan ketika melakukan pengiriman request. Metode-metode yang dimaksud adalah GET, POST, PATCH, PUT, dan DELETE. Berikut adalah penjelasan kegunaan dari setiap metode.
- GET, digunakan untuk pengambilan data
- POST, digunakan untuk penambahan data
- PATCH dan PUT, digunakan untuk pengubahan data
- DELETE, digunakan untuk penghapusan data
Sebenarnya masih ada beberapa HTTP Verbs lagi, tetapi dengan memahami HTTP Verbs diatas sudah cukup untuk bisa langsung mempraktikkan penggunaan router pada Laravel.
Daftarkan Router-mu
Pada folder routers terdapat file web.php . Kita akan mendaftarkan semua routers kita pada file web.php . Pertama sekali, hapus semua kode program dan komentar pada file web.php kecuali tag pembuka PHP. Lalu tambahkan kode program berikut pada file web.php teman-teman.
...
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return "Respon ini diterima dari path / dengan metode GET";
});
Route::get('/artikels', function() {
return "Router ini nantinya akan digunakan untuk mengambil semua data artikel";
});
Route::post('/artikels', function() {
return "Router ini nantinya akan digunakan untuk mencipatakan data artikel yang baru";
});
Route::put('/artikels', function() {
return "Router ini nantinya akan digunakan untuk mengubah data artikel";
});
Route::delete('/artikels', function() {
return "Router ini nantinya digunakan untuk menghapus data artikel";
});
Sebelum kita mencoba mengakses router kita, ada baiknya kita membedah kode program diatas.
- Route, adalah kelas Router yang ada pada aplikasi kita. Kita menggunakan kelas ini untuk mendaftarkan router kita.
- ::get, adalah static method pada kelas Router yang kita gunakan untuk menentukan HTTP Verbs mana yang akan dipakai. Bisa digantikan dengan HTTP Verbs yang lain, menjadi seperti ::post, ::put, dan ::delete .
- / , adalah path yang kita gunakan untuk menentukan kode program mana yang akan kita eksekusi nantinya untuk mendapatkan response.
- function() {} , adalah closure function yang bersifat anonim (tanpa nama) yang akan dieksekusi ketika terdapat request yang memiliki kesamaan path dan metode dengan router yang kita daftarkan.
Untuk mencoba mengakses router kita, terlebih dahulu jalankan aplikasi Laravel teman-teman dengan perintah php artisan serve. Setelah aplikasinya berjalan, akses localhost:8000/127.0.0.1:8000 melalui browser.
Pada web.php kita sudah mendaftar beberapa router dengan path /artikels. Tetapi ketika saya mengaksesnya melalui browser, saya hanya bisa mengakses path /artikels yang menggunakan metode GET. Lalu bagaimana saya bisa mengakses path /artikels yang menggunakan HTTP Verbs lainnya? Hal ini tidak bisa kita lakukan jika hanya menggunakan URL bar pada browser kita. Setiap request yang dilakukan melalui URL bar pada browser secara otomatis menggunakan metode GET. Untuk mengirimkan request dengan menggunakan HTTP Verbs lainnya, kita bisa menggunakan Postman. Pada aplikasi Postman, kita bisa menentukan HTTP Verbs mana yang ingin kita gunakan.
Jika Kalian menemukan, error dengan kode 419 Unknown Status ini adalah error pada aplikasi Laravel yang disebabkan karena kita tidak menyertakan CSRF Token pada request kita. CSRF Token adalah sebuah string acak yang digunakan untuk mengamankan aplikasi kita dari serangan bertipe CSRF.
Untuk setiap router pada aplikasi Laravel yang menggunakan metode selain metode GET harus menyertakan CSRF Token pada request-nya. CSRF Token sendiri akan di-generate oleh view secara otomatis.
Path Parameter pada Router
Pada router yang kita daftarkan, kita bisa melemparkan parameter melalui path. Parameter ini akan sangat berguna ketika nantinya kita mengerjakan aplikasi kita. Contoh penggunaan path parameter adalah ketika kita ingin mengakses data dengan id tertentu, maka kita akan menyertakan id-nya pada path. Misalnya kita ingin mengakses data artikel dengan id 1, maka path-nya adalah /artikels/1 . Misalnya kita ingin menghapus data artikel dengan id 5, maka path-nya adalah /artikels/5 .
Implementasinya pada router kita adalah sebagai kode program berikut.
...
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function() {
return "Respon ini diterima dari path / dengan metode GET";
});
Route::get('/artikels', function(Request $request) {
return "Router ini nantinya akan digunakan untuk mengambil semua data artikel. Closure method pada router ini juga menerima satu parameter yaitu $request yang digunakan untuk menampung query paramater";
});
Route::post('/artikels', function() {
return "Router ini nantinya akan digunakan untuk mencipatakan data artikel yang baru";
});
Route::get('/artikels/{id}', function($id) {
return "Router ini nantinya akan digunakan untuk mengambil satu data artikel dengan id=" . $id;
});
Route::put('/artikels/{id}', function($id) {
return "Router ini nantinya akan digunakan untuk mengubah data artikel dengan id=" . $id;
});
Route::delete('/artikels/{id}', function($id) {
return "Router ini nantinya digunakan untuk menghapus data artikel dengan id=" . $id;
});
Mari kita bedah kode program diatas.
- /artikels/{id} , adalah path yang akan menampung satu parameter yaitu id .
- function($id) , adalah closure method yang akan dijalankan ketika path /artikels/{id} dipanggil. Untuk mendapatkan nilai dari id , kita perlu menambahkan parameter pada closure method kita. Untuk penamaan variabelnya bebas sesuai keinginan teman-teman, tetapi saya sarankan menggunakan penamaan yang jelas dan mudah dimengerti.
Query Parameter pada Router
Jika diatas kita membahas path parameter, maka sekarang kita akan membahas query parameter. Berbeda dengan path parameter, query parameter tidak perlu didefinisikan pada router. Lalu bagaimana kita menggunakannya?
Kita bisa menggunakan query parameter dengan cara menambahkan query pada akhir URL. Query yang dimaksud adalah seperti berikut.
127.0.0.1:8000/artikels?=1
?id=1 adalah query parameter yang kita kirimkan. id adalah nama variabel yang kita berikan dan 1 adalah nilai dari variabel tersebut. Kita juga bisa melemparkan lebih dari satu query parameter pada request kita dengan cara seperti berikut.
127.0.0.1:8000/artikels?=1&title=OrangTerkaya&author=AnonymousDari URL di atas, terdapat tiga parameter yang dikirimkan yaitu id dengan nilai 1 , title dengan nilai OrangTerkaya, dan author dengan nilai Anonymous . Kita perlu menambahkan ampersand symbol (&) untuk memisahkan setiap parameter. Lalu bagaimana kita mengakses parameter yang sudah dikirimkan?
Teman-teman bisa kembali memperhatikan router dengan path /artikels dan metode GET. Mari kita bedah kode programnya.
- /artikels , adalah path-nya
- function(Request $request) , adalah closure method yang menerima satu parameter yaitu $request yang merupakan instansiasi dari kelas Request . Untuk itu kita perlu mengikutsertakan kelas Request pada file web.php dengan cara menambahkan kode program use Illuminate\Http\Request; setelah tag pembuka PHP.
- Untuk mengakses parameter yang sudah dikirimkan, kita menggunakan object operator yaitu -> . Maka untuk mengakses parameter id kode programnya adalah $request->id .
Sampai jumpa di tutorial Laravel Selanjutnya, Terimakasih!







