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!
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:
- Memeriksa apakah orang-orang berada dalam daftar tamu (otentikasi)
- Memastikan mereka berpakaian sesuai (validasi)
- Memberikan mereka band tangan (menambahkan informasi ke permintaan)
- 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