💡 مشاوره

مارک پلاس

تکنولوژی نوین اینترنتی

تفاوت بین Middleware و Request Filters

دسته‌بندی‌ها

تفاوت بین Middleware و Request Filters

📌 Middleware در لاراول


تعریف

در لاراول، Middleware به شما این امکان را می‌دهد که فرآیند درخواست‌ها و پاسخ‌ها رو کنترل کنید. این ابزار معمولاً برای انجام کارهایی مثل احراز هویت (Authentication)، کنترل دسترسی (Authorization)، ثبت لاگ‌ها، یا تغییرات در داده‌های ورودی و خروجی استفاده می‌شود.

ویژگی‌ها و استفاده‌ها

  • استفاده در چرخه درخواست: Middleware قبل از رسیدن درخواست به کنترلر، یا پس از ارسال پاسخ از کنترلر به کاربر اجرا می‌شود.

  • قابلیت ترکیب چند Middleware: می‌توانید چند Middleware را به ترتیب در مسیرهای مختلف اعمال کنید.

  • اعمال به گروه‌ها و مسیرهای خاص: شما می‌توانید Middleware را به گروه‌هایی از مسیرها یا یک مسیر خاص اختصاص دهید.

  • سازگاری با درخواست‌های AJAX و سنتی: Middleware می‌تواند بر روی همه نوع درخواست‌ها (مثل POST، GET، AJAX) اعمال شود.

  • خطایابی دقیق‌تر: امکان ایجاد Middleware برای کنترل دقیق بر روند درخواست و پاسخ وجود دارد.

نمونه کد: تعریف یک Middleware

برای ایجاد یک Middleware جدید، ابتدا دستور زیر را اجرا می‌کنید:

bash
php artisan make:middleware CheckAge

سپس در کنترلر یا مسیر خاص خود آن را اعمال می‌کنید:

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

اعمال Middleware به مسیرها

php
Route::get('profile', function () { // فقط برای درخواست‌هایی که از middleware می‌گذرند })->middleware('checkAge');

مزایای Middleware

  • انعطاف‌پذیری بالا: می‌توانید برای هر درخواست، وضعیت خاصی را اعمال کنید.

  • پشتیبانی از گروه‌های مختلف: می‌توانید Middleware را به گروه‌هایی از مسیرها اختصاص دهید.

  • سازگاری با لاراول: Middleware‌ها بخش اصلی معماری لاراول هستند و در اکوسیستم لاراول به‌خوبی عمل می‌کنند.


📌 Request Filters در لاراول

تعریف

Request Filters در نسخه‌های قدیمی‌تر لاراول (قبل از لاراول 5) مورد استفاده قرار می‌گرفتند و در حقیقت مشابه با Middleware‌ها هستند. اما به‌دلیل تغییرات معماری در لاراول، از نسخه 5 به بعد استفاده از Request Filters کنار گذاشته شد و جای خود را به Middleware داد. در واقع، Filters تنها در نسخه‌های قدیمی لاراول کاربرد داشتند و در نسخه‌های جدیدتر لاراول (۵ و بالاتر) دیگر به‌طور رسمی استفاده نمی‌شوند.

ویژگی‌ها و استفاده‌ها

  • قبل از لاراول 5: Request Filters برای انجام کارهایی مانند احراز هویت، اعتبارسنجی، و یا سایر پردازش‌های پیش از رسیدن درخواست به کنترلر استفاده می‌شد.

  • در لاراول 5 و بالاتر: به‌طور کلی این ویژگی به Middleware تبدیل شده و دیگر نیازی به استفاده از Filters نیست.

  • اعمال در فیلترهای گلوبال: فیلترها معمولاً به‌طور گلوبال برای درخواست‌های HTTP اعمال می‌شدند.

مثال کد: استفاده از Request Filters (قبل از لاراول 5)

قبل از نسخه 5، برای ایجاد یک فیلتر جدید، شما از دستور زیر استفاده می‌کردید:

bash
php artisan make:filter CheckAge

سپس فیلتر را به مسیرها یا گروه‌های خاص اعمال می‌کردید:

php
Route::get('profile', ['before' => 'checkAge', function () { // پروفایل کاربر }]);

مزایای Request Filters (قبل از لاراول 5)

  • سادگی در استفاده: برای عملیات‌های ساده و معمولاً گلوبال، Filters می‌توانست مفید باشد.

  • ساختار ساده‌تر: نسبت به Middleware، ساختار Filters ساده‌تر بود و به راحتی می‌توانستید آن‌ها را برای مسیرهای خاص استفاده کنید.


📊 تفاوت‌ها بین Middleware و Request Filters

ویژگیMiddlewareRequest Filters (قبل از لاراول 5)
نسخه‌های لاراوللاراول 5 به بعدلاراول 4 و نسخه‌های قدیمی‌تر
چگونگی اعمالبه مسیرها، گروه‌ها یا درخواست‌های خاص اعمال می‌شودبه درخواست‌ها یا مسیرهای خاص اعمال می‌شد
سازگاریسازگاری با نسخه‌های جدید لاراول (5 و بالاتر)فقط در نسخه‌های قدیمی‌تر لاراول (قبل از 5)
پشتیبانی از چند مسیربله، می‌توان چند Middleware را به یک مسیر یا گروه اعمال کردمحدود به یک مسیر یا گروه خاص بود
انعطاف‌پذیریبیشتر، می‌توان فرآیندهای پیچیده‌تری را اعمال کردکمتر و محدودتر از Middleware
دسترسی به درخواست و پاسخمی‌توان به راحتی از درخواست و پاسخ استفاده کرددسترسی مشابه به درخواست و پاسخ، اما به‌طور کلی در معماری لاراول جدید از آن استفاده نمی‌شود

جمع‌بندی

  • Middleware در لاراول به‌طور رسمی ابزار اصلی برای مدیریت درخواست‌ها و پاسخ‌ها است و از نسخه 5 به بعد به‌جای Request Filters استفاده می‌شود. Middleware انعطاف‌پذیری بیشتری دارد و امکان اعمال آن به مسیرها، گروه‌ها یا درخواست‌های خاص فراهم است.

  • Request Filters در نسخه‌های قدیمی لاراول استفاده می‌شدند، اما از نسخه 5 به بعد با Middleware جایگزین شده‌اند و در معماری جدید لاراول جایی ندارند.

اگر شما در حال استفاده از لاراول نسخه 5 یا بالاتر هستید، توصیه می‌شود که از Middleware استفاده کنید.

محتوای مرتبط

پست‌های مرتبط