REST API

REST API للخدمات والحجوزات

مشروع تجريبي لبناء REST API تسمح بإدارة الخدمات ومقدمي الخدمات والحجوزات والعملاء، مع نظام للمصادقة والصلاحيات والتحقق من تعارض مواعيد الحجز.

واجهة توضيحية لواجهة REST API للخدمات والحجوزات
نظرة عامة

فكرة المشروع

يهدف المشروع إلى بناء Backend يوفر API لإدارة الخدمات والحجوزات بطريقة منظمة وقابلة للتوسع.

يمكن للعميل استعراض الخدمات، اختيار الخدمة المناسبة، مشاهدة المواعيد المتاحة، ثم إنشاء حجز. وفي المقابل يستطيع مقدم الخدمة إدارة خدماته ومواعيده وحجوزاته.

الهدف الأساسي:

تطبيق مفاهيم REST API وDjango REST Framework وقواعد البيانات والمصادقة والصلاحيات في سيناريو قريب من تطبيقات الخدمات والحجوزات الواقعية.

أهم مميزات النظام

👤 إدارة العملاء

إنشاء حسابات العملاء وإدارة معلوماتهم الأساسية.

🧑‍💼 مقدمو الخدمات

إدارة مقدمي الخدمات والخدمات التي يقدمونها.

🛎️ الخدمات

إنشاء الخدمات وتحديد بياناتها ومدتها وتكلفتها.

📅 الحجوزات

إنشاء الحجوزات ومتابعة حالتها وإدارتها.

⏰ المواعيد

التعامل مع المواعيد المتاحة لمقدمي الخدمات.

🔐 الصلاحيات

تحديد العمليات المسموحة لكل نوع من المستخدمين.

التقنيات المستخدمة

Python Django Django REST Framework PostgreSQL REST API JSON HTTP Git

بنية المشروع

يمكن تقسيم النظام إلى تطبيقات منفصلة، بحيث يكون لكل تطبيق مسؤولية محددة.

booking_api/
│
├── manage.py
│
├── config/
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
│
├── users/
│   ├── models.py
│   ├── serializers.py
│   ├── views.py
│   └── urls.py
│
├── services/
│   ├── models.py
│   ├── serializers.py
│   ├── views.py
│   └── urls.py
│
├── bookings/
│   ├── models.py
│   ├── serializers.py
│   ├── views.py
│   └── urls.py
│
└── requirements.txt

هذا التنظيم يساعد على فصل منطق المستخدمين عن الخدمات والحجوزات، ويجعل المشروع أسهل في التطوير والاختبار.

تصميم قاعدة البيانات

يعتمد النظام على عدة كيانات مترابطة لتمثيل العملاء ومقدمي الخدمات والخدمات والحجوزات.

الكيان الغرض العلاقة
User حسابات المستخدمين عميل أو مقدم خدمة
Service بيانات الخدمة مرتبطة بمقدم الخدمة
Availability أوقات التوفر مرتبطة بمقدم الخدمة
Booking بيانات الحجز عميل + خدمة + موعد

API Endpoints

تم تصميم الـ API باستخدام أسلوب REST بحيث يكون لكل مورد مجموعة من العمليات الواضحة.

Method Endpoint الوظيفة
GET /api/services/ عرض الخدمات
POST /api/services/ إضافة خدمة
GET /api/services/{id}/ تفاصيل خدمة
GET /api/bookings/ عرض الحجوزات
POST /api/bookings/ إنشاء حجز
PATCH /api/bookings/{id}/ تحديث الحجز
DELETE /api/bookings/{id}/ إلغاء الحجز

منطق الحجز

من أهم الأجزاء في هذا النوع من الأنظمة التأكد من أن الموعد المطلوب متاح قبل إنشاء الحجز.

if not is_available(service, start_time):
    return Response(
        {
            "detail": "الموعد غير متاح."
        },
        status=400
    )

create_booking()

المثال السابق يوضح الفكرة العامة فقط، أما التطبيق الفعلي فيحتاج إلى معالجة أكثر دقة للتواريخ والمناطق الزمنية والتعارضات.

Serialization

يستخدم Django REST Framework Serializers لتحويل البيانات بين نماذج Python وJSON والعكس.

class ServiceSerializer(
    serializers.ModelSerializer
):

    class Meta:
        model = Service

        fields = [
            "id",
            "name",
            "description",
            "duration",
            "price",
        ]

المصادقة والصلاحيات

لا يجب أن تكون جميع العمليات متاحة لجميع المستخدمين. لذلك يتم تقسيم الصلاحيات حسب نوع المستخدم والعملية المطلوبة.

  • العميل يستطيع إنشاء وإدارة حجوزاته.
  • مقدم الخدمة يستطيع إدارة خدماته.
  • مقدم الخدمة يستطيع إدارة المواعيد المتاحة.
  • المستخدم لا يستطيع تعديل حجز يخص مستخدمًا آخر.
  • العمليات الإدارية محمية بصلاحيات خاصة.

التحقق من البيانات

يجب فحص البيانات القادمة من العميل قبل تنفيذ أي عملية حساسة.

  • التأكد من وجود الخدمة.
  • التأكد من صحة التاريخ والوقت.
  • التأكد من توفر الموعد.
  • منع إنشاء حجوزات متعارضة.
  • التأكد من صلاحية المستخدم لتنفيذ العملية.

معالجة الأخطاء

يجب أن تكون استجابات الأخطاء واضحة ومتوافقة مع طبيعة الـ API.

{
    "detail": "لا يمكن إنشاء الحجز لأن الموعد غير متاح."
}

استخدام Status Codes المناسبة يساعد العميل على معرفة نتيجة الطلب والتعامل معها بطريقة صحيحة.

الاختبارات

يمكن كتابة اختبارات تغطي أهم السيناريوهات الخاصة بالخدمات والحجوزات.

  • اختبار إنشاء خدمة.
  • اختبار عرض الخدمات.
  • اختبار إنشاء حجز صحيح.
  • اختبار حجز موعد غير متاح.
  • اختبار الصلاحيات.
  • اختبار إلغاء الحجز.

دورة عملية الحجز

01

اختيار الخدمة

العميل يستعرض الخدمات المتاحة.

02

اختيار الموعد

النظام يعرض المواعيد المتاحة.

03

إنشاء الحجز

يتم التحقق من البيانات ثم إنشاء الحجز.

04

تحديث الحالة

تتم متابعة الحجز حتى إتمامه أو إلغائه.

الأمان

لأن النظام يتعامل مع حسابات وبيانات وحجوزات، يجب مراعاة مجموعة من ممارسات الأمان.

  • حماية الـ API بالمصادقة المناسبة.
  • تطبيق الصلاحيات على مستوى الموارد.
  • عدم الثقة بالبيانات القادمة من العميل.
  • عدم تخزين الأسرار داخل Git.
  • استخدام HTTPS في بيئة الإنتاج.

المفاهيم التي يوضحها المشروع

REST

تصميم API واضحة تعتمد على الموارد والـ HTTP Methods.

DRF

بناء API باستخدام Django REST Framework.

Database

تصميم العلاقات بين المستخدمين والخدمات والحجوزات.

Business Logic

تطبيق قواعد العمل مثل منع تعارض الحجوزات.

حالة المشروع

مشروع تجريبي قابل للتطوير

هذا المشروع نموذج تجريبي ضمن معرض الأعمال، ويمكن استبدال محتواه لاحقًا بمشروع حقيقي وإضافة رابط GitHub أو Demo وصور حقيقية.

مشاريع أخرى

هل لديك مشروع؟

هل تريد بناء REST API احترافية؟

يمكن بناء REST APIs منظمة وآمنة وقابلة للتوسع باستخدام Python وDjango REST Framework.

تواصل معي