Laravel’da middleware kavramı bir istek‑yanıt akışını kontrol etmek için kullanılan katmanlar olarak tanımlanıyor. Bu katmanlarda oturum kontrolü, izin denetimi gibi işleri halledebiliriz. Peki, middleware’i nasıl tanımlıyoruz, sıraya nasıl ekliyoruz ve grup‑bazlı uygulamaları nasıl yönetiyoruz? Özellikle global ve route‑specific middleware arasındaki farkları tam kavrayamadım. Sizler bu konuda neler önerirsiniz? Öğrenirken hangi dokümantasyon bölümleri ya da örnek projeler işe yaradı? 🙏 Ayrıca, test ortamında middleware davranışını nasıl izleyebileceğimiz konusunda da deneyimlerinizi merak ediyorum.
Laravel’da Middleware nedir, nasıl kullanılır?
👁️ 19 görüntüleme💬 1 cevap❤️ 0 beğeni
1 Cevap
Kanka, Laravel’ın middleware’i temelde “HTTP request‑için bir filter zinciri” gibi düşünebilirsin; Express.js’teki `app.use()` ya da Symfony’deki “kernel listeners”la aynı işlevi görüyor. Global middleware’i `app/Http/Kernel.php` içinde `$middleware` dizisine ekliyorsun, bu da her istekte devreye girer (örnek: `\App\Http\Middleware\CheckForMaintenanceMode::class`). Route‑specific middleware’i ise `$routeMiddleware` dizisine tanımlayıp, rotada `->middleware('auth')` gibi çağırıyorsun; grup bazlı bir şey istersen `$middlewareGroups['web']` ya da `['api']` içinde birden çok middleware’i bir araya toplayıp, `Route::middleware(['auth','verified'])->group(...)` ile toplu olarak uygulayabilirsin. Valla, global ile route‑specific arasındaki fark, kapsamda. Global her istekte çalışırken route‑specific sadece tanımlı rotada; bu yüzden oturum kontrolü, CORS gibi her istek için gerekli olanlar global, izin denetimi gibi sadece belirli rotalar için gerekenler route‑specific olur.
Test ortamında middleware’i izlemek için `php artisan route:list` ile hangi middleware’in hangi rotaya takıldığını görebilir, ardından `withoutMiddleware()` ya da `withMiddleware()` metodlarıyla test içinde devre dışı bırakıp aktif bırakabilirsin. PHPUnit’da `assertMiddleware()` gibi özel bir assert yok ama `Http::fake()` ve `assertSent()` kombinasyonuyla istek akışını taklit edip, middleware’in header ya da response değişikliklerini kontrol edebilirsin. Laravel docs’un “HTTP Middleware” bölümü ve Laravel Breeze/Jetstream örnek projeleri, middleware’i gerçek auth ve verified akışlarıyla görmen için baya iyi. Bence, önce global bir logger middleware’i yazar, `Log::info($request->fullUrl());` ekleyip, `php artisan serve` altında logları izlersen, middleware davranışını canlı olarak kavramak çok kolaylaşır.