Routing & Controller untuk REST API - Perwira Learning Center

Latar Belakang

Sebagai lanjutan dari pembahasan mengenai pengenalan dan instalasi Laravel, tahap berikutnya adalah mempelajari routing dan controller. Setelah memahami struktur dasar proyek Laravel, penting untuk mengetahui bagaimana sebuah request dari pengguna dapat diproses hingga menghasilkan tampilan atau data yang sesuai. Routing dan controller merupakan dua komponen utama yang mengatur alur tersebut dalam arsitektur MVC.
Artikel ini dibuat dengan tujuan untuk mendokumentasikan hasil pembelajaran saya mengenai peran routing dan controller dalam Laravel. Dengan memahami kedua komponen ini, saya dapat mengetahui bagaimana URL terhubung dengan logika aplikasi serta bagaimana data diproses sebelum dikirimkan sebagai respons kepada pengguna.

Alat dan Bahan

Alat dan Bahan yang digunakan yaitu sebagai berikut:

A. Perangkat Lunak

  • Web browser (Google Chrome) 
  • Code editor (Visual Studio Code)
  • Terminal
  • Web server    
  • Composer 
  • PHP
  • Laravel

B. Perangkat Keras

  • Laptop

Routing

Apa itu Routing?

Routing di Laravel adalah mekanisme yang menghubungkan antara URL yang diakses dengan logika pemrosesan yang akan dijalankan. Routing bertindak sebagai peta yang mengarahkan setiap request ke tujuan yang tepat. Ketika seorang pengguna mengakses aplikasi Laravel, framework akan membaca file routing untuk menentukan kode apa yang harus dieksekusi berdasarkan HTTP method dan URI yang diminta.

Konsep Dasar Routes

Laravel menyediakan dua file utama untuk mendefinisikan route, yang terletak dalam direktori `routes`:

routes/web.php

File ini diperuntukkan bagi route yang berkaitan dengan antarmuka web. Route yang didefinisikan di sini secara otomatis dilengkapi dengan middleware `web` yang menangani session, enkripsi cookie, dan perlindungan CSRF. Route ini biasanya mengembalikan tampilan (view) HTML atau melakukan redirect.

routes/api.php

File ini dikhususkan untuk route API yang stateless. Middleware `api` yang diterapkan membatasi fitur seperti session, dan route di sini biasanya mengembalikan respons dalam format JSON. Perlu diperhatikan bahwa route API secara default memiliki prefix `/api` pada URL-nya.

Struktur File Routes

Route::method('/uri', function() {
return response();
});
Penjelasan:
- Route:: - Ini adalah facade yang menyediakan akses ke komponen routing Laravel
- method - Menentukan metode HTTP yang akan ditangani (GET, POST, PUT, DELETE, dll)
- '/uri' - Path URL yang akan dipetakan
- function() - Closure atau callback yang akan dieksekusi ketika route diakses

Contoh sederhana route:

Route::get('/welcome', function () {
return view('welcome');
});

HTTP Method dalam Routing

GET - Membaca Data

Metode GET digunakan untuk mengambil atau membaca data dari database.
Route::get('/produk', function () {
return "Halaman daftar produk";
});

POST - Membuat Data Baru

POST digunakan untuk mengirimkan data baru ke database.
Route::post('/produk', function () {
return "Data produk baru disimpan";
});

PUT - Memperbarui Data

PUT digunakan untuk memperbarui data yang sudah ada.
Route::put('/produk/{id}', function ($id) {
return "Produk dengan ID {$id} diperbarui";
});

DELETE - Menghapus Data

DELETE digunakan untuk menghapus data yang ada di database.
Route::delete('/produk/{id}', function ($id) {
return "Produk dengan ID {$id} dihapus";
});

Route Parameter

Dalam aplikasi nyata, kita sering membutuhkan URL yang dinamis. Misalnya, menampilkan profil pengguna berdasarkan ID atau username. Laravel menyediakan mekanisme route parameter yang elegan untuk kebutuhan ini.

Parameter Wajib

Parameter dinamis ditempatkan dalam kurung kurawal `{}` dan akan diteruskan sebagai argumen ke closure atau method controller.
Route::get('/user/{id}', function ($id) {
return "Menampilkan user dengan ID: {$id}";
});

Parameter Opsional

Terkadang kita membutuhkan parameter yang bersifat opsional. Ini dapat dicapai dengan menambahkan tanda `?` pada parameter dan memberikan nilai default.
Route::get('/user/{name?}', function ($name = 'Tamu') {
return "Halo, {$name}";
});

Mengakses Parameter di Controller

Ketika menggunakan controller, parameter akan diteruskan sebagai argumen method:
// Dalam file routes/web.php
Route::get('/post/{slug}', [PostController::class, 'show']);

// Dalam file app/Http/Controllers/PostController.php
public function show($slug)
{
return "Menampilkan post dengan slug: {$slug}";
}

Controllers

Apa itu Controller?

Controller adalah ruang kerja dimana logika aplikasi dieksekusi. Dalam arsitektur MVC (Model-View-Controller), controller bertindak sebagai perantara antara model (data) dan view (tampilan).

Cara Membuat Controllers

Controller bisa dibuat dengan command artisan dari Laravel, yaitu sebagai berikut:
php artisan make:controller ProdukController

Resource Controllers

Pada umumnya ketika kita membuat sebuah model dan pada model tersebut ada proses CRUD maka kita harus membuat satu persatu mulai dari Routing sampai ke Controller dan fungsi yang ada di controller. Laravel mempermudah kita dalam membuat proses tersebut dengan Resource Controller yang sudah ada dari versi sebelumnya sampai sekarang, dengan menggunakan Resource Controller ini kita tidak perlu meng define satu persatu , melainkan hanya dengan menggunakan Artisan Command Laravel akan membuatkan Resource yang dibutuhkan.

Berikut standart resource yang ada di Laravel :

Verb

URI

Route Name

GET

/photos

photos.index

GET

/photos/create

photos.create

POST

/photos

photos.store

GET

/photos/{photo}

photos.show

GET

/photos/{photo}/edit

photos.edit

PUT/PATCH

/photos/{photo}

photos.update

DELETE

/photos/{photo}

photos.destroy


Membuat Resource Controller

Resource controller dapat dibuat dengan perintah Artisan:

php artisan make:controller ProdukController --resource

Perintah ini akan menghasilkan controller dengan ketujuh method di atas.

Mendefinisikan Route Resource

Daripada mendefinisikan ketujuh route satu per satu, Laravel menyediakan method `resource`:

Route::resource('produk', ProdukController::class);

Hasil Pembelajaran

Melalui pembelajaran ini, saya memahami bahwa routing berfungsi untuk mendefinisikan jalur akses aplikasi berdasarkan URL yang diakses pengguna. Setiap route yang dibuat akan mengarahkan request ke fungsi tertentu atau ke controller yang telah ditentukan. Dengan adanya routing, alur navigasi dalam aplikasi menjadi lebih terstruktur dan mudah dikelola.
Saya juga memahami bahwa controller bertugas menangani logika aplikasi. Controller menerima request dari route, kemudian memproses data sesuai kebutuhan, seperti mengambil data dari database atau mengatur tampilan yang akan ditampilkan. Dengan penggunaan controller, kode menjadi lebih terorganisir karena pemisahan antara logika dan tampilan dapat diterapkan dengan baik.

Kesimpulan

Routing dan controller merupakan bagian penting dalam pengembangan aplikasi menggunakan Laravel. Routing mengatur arah request, sedangkan controller mengelola proses dan logika yang terjadi sebelum menghasilkan respons.
Dengan memahami kedua konsep ini sebagai lanjutan dari proses instalasi Laravel, saya memiliki dasar yang lebih kuat untuk mengembangkan fitur aplikasi secara lebih kompleks dan terstruktur sesuai dengan arsitektur MVC.