- بواسطة x32x01 ||
سؤال انترفيو: يعني إيه Middleware؟ 🤔
من أكتر أسئلة الانترفيو اللي بتيجي لأي Backend Developer 👇يعني إيه Middleware؟
الإجابة ببساطة: Middleware هي طبقات أو فلاتر بتمر عليها الـ Request قبل ما توصل للـ Controller، وأحيانًا بعد ما الـ Response يطلع منه.
📌 تخيّلها زي حراس أمن أي طلب داخل التطبيق لازم يعدّي عليهم الأول 👮♂️
استخدامات Middleware غير الـ Auth 🔐❌
ناس كتير فاكرة إن الـ Middleware شغلتها بس المصادقة (Auth) بس الحقيقة؟ استخداماتها أوسع بكتير جدًا 🔥خلّينا نشوف أهم الاستخدامات العملية 👇
تنقية المدخلات (Input Sanitization) ✨
واحد من أشهر الاستخدامات إنك تعمل Middleware ينضّف الداتا اللي جاية من المستخدم.زي مثلًا:
- يشيل المسافات الزيادة
- يمنع إدخال قيم غريبة
مثال Laravel Middleware:
PHP:
public function handle($request, Closure $next)
{
$request->merge(array_map('trim', $request->all()));
return $next($request);
}
التعامل مع CORS في الـ APIs 🌐
لو بتشتغل APIs أكيد قابلتك مشكلة CORS 😅 Middleware هنا حل عبقري.تقدر من خلالها:
- تسمح بطلبات من Domains معينة
- تضيف Headers جاهزة
مثال بسيط:
PHP:
$response = $next($request);
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
return $response;
تسجيل الطلبات (Logging) 📝
محتاج تعرف:- مين بعت Request؟
- إمتى؟
- على أي Endpoint؟
PHP:
Log::info('API Request', [
'url' => $request->url(),
'method' => $request->method(),
'ip' => $request->ip()
]); - في Debugging
- في Security
- في مراجعة النشاطات
تحديد لغة التطبيق (Localization) 🌍
لو التطبيق Multi-language Middleware تقدر تقرأ اللغة من الـ Header وتحدد لغة السيستم. PHP:
$locale = $request->header('Accept-Language', 'en');
App::setLocale($locale);
تحديد عدد الطلبات (Rate Limiting) 🚫⚡
من أهم استخدامات الـ Middleware حماية الـ API من:- Brute Force
- Spam
- استخدام مفرط
PHP:
Route::middleware('throttle:60,1')->group(function () {
Route::get('/api/data', 'ApiController@index');
});
وضع الصيانة (Maintenance Mode) 🛠️
أحيانًا:- بتعمل تحديثات
- بتصلّح Bugs
- بتعيد هيكلة المشروع
- تمنع كل المستخدمين
- وتسمح للمطورين بس
PHP:
if (!auth()->user() || !auth()->user()->is_admin) {
abort(503, 'Site under maintenance');
}
ليه الـ Middleware مهمة في المشاريع الكبيرة؟ 🧠
- بتنضّم الكود
- بتقلل التكرار
- بتخلي الـ Controller نضيف
- بتسهّل الصيانة والتطوير
الخلاصة 👇🔥
🔹 الـ Middleware مش بس Auth🔹 هي قلب التحكم في أي Backend
🔹 بتستخدم في:
- Security
- Performance
- Logging
- APIs
- User Experience