Laravel - Middleware: Portal to Request Handling

Hai teman-teman, pengembang Laravel masa depan! Hari ini, kita akan mendalaminya dunia yang menarik Laravel Middleware. Picturkan middleware seperti seorang penjaga keamanan yang membantu aplikasi Anda - itu memeriksa dan memproses permintaan sebelum mencapai logika utama aplikasi Anda. mari kita mulai perjalanan yang menarik ini bersama!

Laravel - Middleware

Apa Itu Middleware?

Sebelum kita masuk ke kode, mari kita mengerti apa itu middleware. Picturkan Anda mengadakan pesta (aplikasi Anda), dan Anda memiliki seorang penjaga gerbang (middleware) di pintu masuk. Penjaga ini dapat:

  1. Memeriksa apakah orang-orang berada dalam daftar tamu (otentikasi)
  2. Memastikan mereka berpakaian sesuai (validasi)
  3. Memberikan mereka band tangan (menambahkan informasi ke permintaan)
  4. Atau bahkan mengusir mereka (mengakhiri permintaan)

Itu sebenarnya apa yang middleware lakukan bagi aplikasi Laravel Anda!

Mendaftar Middleware

Sekarang, mari kita lihat bagaimana kita dapat membuat dan mendaftar middleware sendiri.

Membuat Middleware

Pertama, kita akan membuat middleware sederhana yang memeriksa apakah pengguna berusia di atas 18:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}

return $next($request);
}
}

Dalam contoh ini, middleware CheckAge memeriksa apakah parameter age dalam permintaan lebih besar dari 18. Jika tidak, ia akan mengalihkan ke halaman utama. Jika ya, ia akan meneruskan permintaan ke middleware berikutnya atau ke aplikasi utama.

Mendaftar Middleware Global

Untuk menggunakan middleware ini secara global (untuk semua rute), kita perlu mendaftarkannya di file app/Http/Kernel.php:

protected $middleware = [
// ...
\App\Http\Middleware\CheckAge::class,
];

Mendaftar Middleware Rute

Jika Anda hanya ingin menggunakan middleware untuk rute tertentu, Anda dapat mendaftarkannya sebagai middleware rute:

protected $routeMiddleware = [
// ...
'checkage' => \App\Http\Middleware\CheckAge::class,
];

Kemudian, Anda dapat menggunakannya di rute Anda seperti ini:

Route::get('adult-only', function () {
//
})->middleware('checkage');

Parameter Middleware

kadang-kadang, kita ingin middleware kita lebih fleksibel. Itu di mana parameter middleware membantu!

Mari kita ubah CheckAge middleware untuk menerima parameter umur minimum:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
public function handle($request, Closure $next, $minAge)
{
if ($request->age <= $minAge) {
return redirect('home');
}

return $next($request);
}
}

Sekarang, kita dapat menggunakan middleware ini dengan batas umur yang berbeda:

Route::get('adult-only', function () {
//
})->middleware('checkage:18');

Route::get('senior-only', function () {
//
})->middleware('checkage:65');

Apakah itu menarik? Kita telah membuat middleware kita dapat digunakan untuk berbagai situasi!

Middleware yang Dapat Diteruskan

kadang-kadang, kita ingin middleware kita melakukan sesuatu setelah tanggapan telah dikirim ke browser. Itu di mana middleware yang dapat diteruskan masuk!

Mari kita buat middleware yang mencatat waktu tanggapan:

<?php

namespace App\Http\Middleware;

use Closure;

class LogResponseTime
{
public function handle($request, Closure $next)
{
$request->start_time = microtime(true);

return $next($request);
}

public function terminate($request, $response)
{
$duration = microtime(true) - $request->start_time;
\Log::info('Response time: ' . $duration . ' seconds');
}
}

Middleware ini menambahkan start_time ke permintaan, kemudian mencatat waktu total tanggapan setelah tanggapan telah dikirim.

Untuk menggunakan middleware yang dapat diteruskan, pastikan itu terdaftar di file app/Http/Kernel.php:

protected $middleware = [
// ...
\App\Http\Middleware\LogResponseTime::class,
];

Metode Middleware

Berikut adalah tabel metode utama yang Anda akan gunakan saat bekerja dengan middleware:

Metode Deskripsi
handle() Logika utama middleware. Memproses permintaan dan secara opsional meneruskan ke middleware berikutnya.
terminate() Berjalan setelah tanggapan telah dikirim ke browser. Digunakan untuk pembersihan atau pencatatan.

Kesimpulan

Dan itu adalah dia, teman-teman! Kita telah berpergian melalui negeri Laravel Middleware, dari membuat dan mendaftar middleware hingga menggunakan parameter dan middleware yang dapat diteruskan. Ingat, middleware adalah seperti pisau瑞士 Army knife dalam penanganan permintaan - itu multifungsi, kuat, dan alat penting dalam peralatan Laravel Anda.

Saat Anda terus menjelajahi dunia Laravel, Anda akan menemukan banyak cara kreatif untuk menggunakan middleware. Mungkin Anda akan membuat middleware untuk memeriksa mode perawatan, mencatat permintaan, atau bahkan mengubah data permintaan. Kesempatan adalah tak terbatas!

Terus coding, terus belajar, dan terutama, bersenang-senang! Sampaijumpa lagi, selamat ber-Laravel!

Credits: Image by storyset