Back to IF3110 Pengembangan Aplikasi Berbasis Web

Topic

Questions/Cues

  • Routing dasar?
  • Di mana file rute?
  • Beda web.php vs api.php?
  • Apa saja metode Router?
  • Apa itu CSRF Protection?
  • Rute redirect?
  • Rute view?
  • Parameter Wajib (Required)?
  • Parameter Opsional?
  • Apa itu Route Groups?
  • Subdomain Routing?
  • Route Prefixes?

Reference Points

  • Slides IF3110-10b-Web-Application-Framework-Laravel.pdf (Slide 12-21)

Routing Dasar

Routing di Laravel adalah proses mendefinisikan cara aplikasi merespons permintaan (request) HTTP ke URI tertentu.

Bentuk paling dasar adalah menghubungkan sebuah URI dengan sebuah Closure (fungsi anonim).

use Illuminate\Support\Facades\Route;
Route::get('/greeting', function () {
  return 'Hello world';
});

File Rute (routes/)

Semua rute didefinisikan di dalam file di direktori routes/. File-file ini dimuat secara otomatis.

  • routes/web.php: Mendefinisikan rute untuk interface web. Rute di sini memiliki fitur seperti session state dan CSRF protection. Sebagian besar rute aplikasi Anda akan ada di sini.
  • routes/api.php: Rute di sini bersifat stateless (tidak ada session). Permintaan ke rute ini biasanya diautentikasi menggunakan token.

Metode Router (Router Methods)

Router memungkinkan kita mendaftar rute untuk berbagai method HTTP:

  • Route::get($uri, $callback);
  • Route::post($uri, $callback);
  • Route::put($uri, $callback);
  • Route::patch($uri, $callback);
  • Route::delete($uri, $callback);
  • Route::options($uri, $callback);

CSRF Protection

CSRF (Cross-Site Request Forgery) adalah serangan di mana pengguna yang tidak sah melakukan tindakan atas nama pengguna yang terautentikasi.

Laravel secara otomatis melindungi rute di web.php. Setiap form HTML yang menunjuk ke rute POST, PUT, PATCH, atau DELETE wajib menyertakan field token CSRF.

<form method="POST" action="/profile">
  @csrf 
  ...
</form>

Tipe Rute Khusus

Redirect Routes: Untuk rute yang hanya berfungsi mengalihkan (redirect) ke URI lain.

  • Route::redirect('/here', '/there');

Bisa juga menyertakan status kode, misal 301 (Moved Permanently).

  • Route::permanentRedirect('/here', '/there'); (Otomatis 301)

View Routes: Untuk rute yang hanya bertugas mengembalikan sebuah view.

  • Route::view('/welcome', 'welcome');

Kita juga bisa langsung mengirimkan data ke view tersebut.

  • Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

Route Parameters

Required Parameters (Wajib): Digunakan untuk menangkap segmen dinamis dari URI.

Route::get('/user/{id}', function ($id) { 
  return 'User ' . $id;
});

Optional Parameters (Opsional): Tambahkan tanda tanya ? setelah nama parameter dan berikan nilai default di closure.

Route::get('/user/{name?}', function ($name = null) { 
  return $name; 
});

Route Groups

Route Group (Grup Rute) memungkinkan kita berbagi atribut (seperti middleware atau prefix) ke banyak rute sekaligus, tanpa harus mendefinisikannya di setiap rute.

Route Prefixes: Menggunakan method prefix untuk memberi awalan URI pada semua rute di dalam grup.

// URL akan menjadi /admin/users
Route::prefix('admin')->group(function () { 
  Route::get('/users', function () { ... });
});

Subdomain Routing: Rute juga dapat dikelompokkan berdasarkan subdomain.

Route::domain('{account}.example.com')->group(function () {
  Route::get('user/{id}', function ($account, $id) { ... });
});

Summary

Routing di Laravel adalah mekanisme inti yang memetakan URI (URL) ke logika aplikasi (baik Closure atau method Controller). Rute utama didefinisikan dalam routes/web.php (untuk web dengan session dan CSRF) dan routes/api.php (untuk API stateless). Laravel menyediakan method untuk semua kata kerja HTTP (get, post, dll.) dan mendukung parameter dinamis (wajib dan opsional). Untuk efisiensi, Route Groups memungkinkan pengelompokan rute untuk berbagi atribut umum seperti Prefixes (misal: /admin) atau Subdomain.