البرمجيات الوسيطة Middleware في إطار العمل كوكب Kawkab
الـ Middleware هي طبقة وسيطة تُستخدم لمعالجة الطلبات الواردة قبل الوصول إلى المتحكمات (Controllers) أو لتنفيذ منطق معين بعد الاستجابة.
تُعد Middleware أداة قوية لتنفيذ المهام الشائعة مثل المصادقة، التحقق من الصلاحيات، وتسجيل الأخطاء.
إنشاء Middleware جديد
لإنشاء Middleware جديد في كوكب Kawkab، استخدم الأمر التالي:
npm run kawkab middleware:make <name> [module]
المتغيرات:
<name>
: اسم الـ Middleware.[module]
: الوحدة التي سيتم إضافة الـ Middleware إليها (اختياري، الافتراضي هوmain
).
مثال عملي:
npm run kawkab middleware:make auth main
الناتج:
🆗 Middleware auth created successfully in module main.
1️⃣ Your middleware file is ready! You can now import it like this:
👉 import { AuthMiddleware } from "../middleware/auth"
2️⃣ Use the middleware like so:
👉 new AuthMiddleware()
3️⃣ You can pass the data like this:
👉 new AuthMiddleware({id:1, name:'Hassan'})
4️⃣ You can access the data in middleware class like this:
👉 this.data
محتوى Middleware الافتراضي
عند إنشاء Middleware جديد، يتم إنشاء ملف يحتوي على الهيكل الأساسي التالي:
import { BaseMiddleware, inherit } from "kawkab";
export class AuthMiddleware extends BaseMiddleware {
/**
* تنفيذ المنطق الأساسي للـ Middleware.
*/
handle() {
console.log("Middleware executed with data:", this.data);
}
}
كيفية استخدام Middleware
استيراد Middleware
بعد إنشاء الـ Middleware، يمكنك استيراده في المتحكم أو في أي جزء من التطبيق.
import { AuthMiddleware } from "../middleware/auth";
تطبيق Middleware
للاستفادة من الـ Middleware، يمكنك استخدامه بالطريقة التالية:
new AuthMiddleware();
تمرير البيانات إلى Middleware
يمكنك تمرير بيانات عند استدعاء الـ Middleware:
new AuthMiddleware({ id: 1, name: "Hassan" });
الوصول إلى البيانات داخل Middleware
يمكنك الوصول إلى البيانات التي تم تمريرها باستخدام الخاصية this.data
داخل فئة الـ Middleware:
export class AuthMiddleware extends BaseMiddleware {
handle() {
console.log("User ID:", this.data.id);
console.log("User Name:", this.data.name);
}
}
دمج Middleware مع المتحكمات
يمكنك ربط الـ Middleware بدوال معينة في المتحكم باستخدام دالة middleware()
.
مثال عملي:
import { BaseController, inherit } from "kawkab";
import { AuthMiddleware } from "../middleware/auth";
export default class extends inherit(BaseController) {
middleware() {
return {
get: () => new AuthMiddleware({ role: "admin" }),
};
}
get() {
return { status: true, message: "Welcome, admin!" };
}
}
middleware()
: تربط Middleware معين بطرق مثلget
,post
, وغيرها.new AuthMiddleware({ role: "admin" })
: يتم تمرير بيانات إلى Middleware أثناء التنفيذ.
أمثلة عملية
مصادقة المستخدم
إنشاء Middleware خاص بالتحقق من المصادقة:
import { BaseMiddleware, inherit } from "kawkab";
export class AuthMiddleware extends BaseMiddleware {
handle() {
if (!this.data || !this.data.token) {
throw new Error("Authentication failed!");
}
console.log("Authenticated user with token:", this.data.token);
}
}
استخدامه في المتحكم:
import { BaseController, inherit } from "kawkab";
import AuthMiddleware from "../middleware/auth";
export default class extends inherit(BaseController) {
middleware() {
return {
get: () => new AuthMiddleware({ token: "valid-token" }),
};
}
get() {
return { status: true, message: "User is authenticated!" };
}
}
ملخص
خطوات استخدام Middleware:
- إنشاء Middleware جديد باستخدام الأمر:
npm run kawkab middleware:make <name> [module]
- استيراد Middleware في المتحكم أو أي مكان آخر.
- تطبيق Middleware باستخدام
new MiddlewareName()
. - تمرير البيانات عند الحاجة باستخدام
{}
والوصول إليها باستخدامthis.data
. - ربط Middleware بدوال المتحكم عبر دالة
middleware()
.
أهم ميزات Middleware في كوكب Kawkab:
- سهولة الإنشاء: باستخدام أوامر بسيطة.
- مرونة الاستخدام: يمكن تطبيقها على مستوى الوحدة أو المتحكم.
- تمرير البيانات: تسهيل نقل البيانات أثناء التنفيذ.
خاتمة
الـ Middleware في إطار العمل كوكب Kawkab يوفر أداة قوية لتخصيص تدفق الطلبات وتنفيذ المهام الشائعة.
يمكنك استخدامه لتنفيذ مصادقة، التحقق من الصلاحيات، أو حتى تسجيل الطلبات، مما يمنحك تحكمًا كاملاً بسير عمل التطبيق.