Laravel - Middleware: Your Gateway to Request Handling

Halo sana, bakal pembangun Laravel! Hari ini, kita akan melihat dunia yang menarik Laravel Middleware. P想象 middleware sebagai penjaga keamanan yang membantu aplikasi Anda - itu memeriksa dan memproses permintaan sebelum mencapai logika aplikasi utama Anda. mari kita mulai perjalanan yang menarik ini bersama!

Laravel - Middleware

Apa Itu Middleware?

Sebelum kita masuk ke kode, mari kita pahami apa itu middleware. Bayangkan Anda mengadakan pesta (aplikasi Anda), dan Anda memiliki 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 wristband (menambahkan informasi ke permintaan)
  4. atau bahkan menolak mereka (mengakhiri permintaan)

Itu sebasikalnya apa yang middleware lakukan untuk aplikasi Laravel Anda!

Mendaftar Middleware

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

Membuat Middleware

Pertama-tama, kita akan membuat middleware sederhana yang memeriksa jika 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 kita memeriksa jika parameter age dalam permintaan lebih dari 18. Jika tidak, ia mengalihkan ke halaman utama. Jika iya, ia meneruskan permintaan ke middleware berikutnya atau ke aplikasi utama.

Mendaftar Middleware Global

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

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

Mendaftar Middleware Rute

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

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

Kemudian, Anda dapat menggunakannya dalam 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 berguna!

Mari kita modifikasi CheckAge middleware untuk menerima parameter usia 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 usia 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 yang dapat digunakan untuk berbagai situasi!

Middleware Yang Dapat Diterminate

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

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 total waktu tanggapan setelah tanggapan telah dikirim.

Untuk menggunakan middleware yang dapat diterminate, 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() Logik utama middleware. Memproses permintaan dan secara opsional meneruskan ke middleware berikutnya.
terminate() Jalankan setelah tanggapan telah dikirim ke browser. Digunakan untuk pembersihan atau pencatatan.

Kesimpulan

Dan di sana Anda punya nya, teman-teman! Kita telah melakukan perjalanan melalui negeri Laravel Middleware, dari membuat dan mendaftar middleware hingga menggunakan parameter dan middleware yang dapat diterminate. Ingat, middleware adalah seperti pisau Swiss Army dalam penanganan permintaan - itu multifungsi, kuat, dan alat penting dalam peralatan Laravel Anda.

Saat Anda terus mengembangkan 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. Kemungkinan adalah tak terbatas!

Terus mengoding, terus belajar, dan terutama, bersenang-senang! Sampai jumpa lagi, selamat ber-Laravel!

Credits: Image by storyset