الأساسيةالمتحكمات

المتحكمات (Controllers) في إطار العمل كوكب Kawkab

المتحكمات (Controllers) هي جزء أساسي من بنية إطار العمل كوكب Kawkab.
تُستخدم المتحكمات لإدارة الطلبات الواردة (HTTP Requests) والتفاعل مع الخدمات والنماذج لتقديم استجابات مناسبة.

إنشاء متحكم جديد

يمكنك إنشاء متحكم جديد باستخدام الأمر التالي:

npm run kawkab controller:make [path] [module]

المتغيرات:

  • path: المسار الذي سيتم إنشاء المتحكم فيه داخل الوحدة.
  • module: اسم الوحدة التي سيُضاف إليها المتحكم افتراضياً، يكون main.

مثال عملي

الأمر لإنشاء متحكم

npm run kawkab controller:make /

الهيكل الناتج

app/
├── users/
│   ├── controllers/
│   │   └── index.ts

محتوى المتحكم

import { BaseController, inherit } from "kawkab";
 
export default class extends inherit(BaseController) {
    /**
     * تعامل مع الطلبات من نوع GET.
     */
    get() {
        return {
            status: true,
            message: "Welcome to Kawkab Framework 🚀",
        };
    }
}

الدوال الخاصة في المتحكم

المتحكم يدعم عدة دوال تمثل HTTP Methods مثل:

  • get(): للتعامل مع طلبات GET.
  • post(): للتعامل مع طلبات POST.
  • put(): للتعامل مع طلبات PUT.
  • patch(): للتعامل مع طلبات PATCH.
  • delete(): للتعامل مع طلبات DELETE.

مثال على استخدام جميع الدوال:

import { BaseController, inherit } from "kawkab";
 
export default class extends inherit(BaseController) {
    get() {
        return { status: true, message: "This is a GET request." };
    }
 
    post() {
        return { status: true, message: "This is a POST request." };
    }
 
    put() {
        return { status: true, message: "This is a PUT request." };
    }
 
    patch() {
        return { status: true, message: "This is a PATCH request." };
    }
 
    delete() {
        return { status: true, message: "This is a DELETE request." };
    }
}

دالة middleware

دالة middleware في المتحكم تُستخدم لتحديد الطبقة الوسيطة (Middleware) لكل نوع من الطلبات.
يمكنك تحديد دالة مخصصة لكل HTTP Method.

مثال على استخدام middleware:

import { BaseController, inherit } from "kawkab";
 
export default class extends inherit(BaseController) {
    middleware() {
        return {
            get: () => {
                console.log("Middleware for GET");
            },
            post: () => {
                console.log("Middleware for POST");
            },
        };
    }
 
    get() {
        return { status: true, message: "GET request passed middleware." };
    }
 
    post() {
        return { status: true, message: "POST request passed middleware." };
    }
}

دليل الاستخدام

إنشاء متحكم جديد في الوحدة users:

npm run kawkab controller:make users/profile users

إضافة المنطق داخل المتحكم

import { BaseController, inherit } from "kawkab";
 
export default class extends inherit(BaseController) {
    middleware() {
        return {
            get: () => {
                console.log("Middleware for Profile GET");
            },
        };
    }
 
    get() {
        return {
            status: true,
            message: "Welcome to Profile Page!",
        };
    }
}

الوصول إلى المتحكم:

افتراضياً، يمكن الوصول إلى المتحكم عبر المسار التالي:

http://localhost:3000/api/users/profile

ملخص

أهم ميزات المتحكمات في كوكب Kawkab:

  1. دوال HTTP Methods: كل متحكم يحتوي على دوال تمثل الطلبات (GET, POST, PUT, PATCH, DELETE).
  2. دالة middleware: إضافة طبقة وسطية مخصصة لكل نوع من الطلبات.
  3. سهولة الإنشاء: إنشاء متحكمات جديدة باستخدام الأوامر بسهولة.

خاتمة

المتحكمات في كوكب Kawkab توفر مرونة عالية لإدارة الطلبات وتنظيم الكود. باستخدام دوال مخصصة لكل HTTP Method وإمكانية تخصيص Middleware، يمكنك بناء تطبيقات قوية وقابلة للتوسع بسهولة.