في هذا الدرس 8تصفّح المواضيع
تعرّفنا في الفصول السابقة على كيفية انتقال الطلبات والاستجابات عبر بروتوكول وكيف تطلب الواجهة الأمامية البيانات في الخلفية دون تجميد الشاشة. والآن ننتقل إلى الضفة الأخرى من الجسر لنفهم: كيف يبني مطور الواجهة الخلفية واجهات برمجة التطبيقات () ويوفرها للمنصات المختلفة؟ وكيف يختبرها قبل وجود أي شاشة؟ وكيف يتحقق الخادم من هوية المستخدم () ويضبط حدود صلاحياته ()؟ في هذا الدرس سنكتسب تصوراً معمارياً واضحاً ومبسطاً لنقاط نهاية ، وأداة ، وآليتي تتبع الدخول عبر جلسات الخادم ورموز .
قبل الغوص في تفاصيل هذا الدرس، استعرض جدول المصطلحات الأساسية التالية:
| المصطلح بالعربية | المصطلح بالإنجليزية | النطق التقني | المعنى المبسط |
|---|---|---|---|
| نقطة نهاية البرمجة | إيه بي آي إند بوينت | مسار رابط محدد على الخادم (مثل /api/courses) مخصص لاستقبال طلبات معينة وإرجاع بيانات منظمة. | |
| واجهة برمجة قياسية | ريستفول إيه بي آي | نمط معماري قياسي لتنظيم مسارات الخادم باستخدام طرق وأكواد حالة HTTP وتبادل البيانات بصيغة JSON. | |
| المصادقة وإثبات الهوية | أوثينتيكيشن | عملية التحقق من هوية المستخدم للإجابة عن سؤال: من أنت؟ (عبر البريد وكلمة المرور أو رمز التحقق). | |
| الترخيص وتحديد الصلاحيات | أوثورايزيشن | عملية فحص صلاحيات المستخدم بعد معرفة هويته للإجابة عن سؤال: ماذا يُسمح لك بفعله؟ | |
| جلسة الخادم | سيرفر سيشن | سجل يحفظه الخادم في ذاكرته أو قاعدة بياناته لتتبع المستخدم المسجل، ويربطه بمعرّف يُرسل في ملف Cookie. | |
| رمز الويب الموقّع | جيسون ويب توكن / جي دبليو تي | بطاقة هوية رقمية مشفرة وموقّعة يصدرها الخادم ويحملها التطبيق ليرسلها في رأس الرسالة مع كل طلب. |
في هندسة البرمجيات الحديثة، نادراً ما تكتفي الشركات بموقع ويب لأجهزة الحاسوب فقط؛ بل تحتاج المنصة نفسها إلى موقع ويب يعمل على المتصفح، وتطبيق آيفون ()، وتطبيق أندرويد (). فهل تبني الشركة ثلاث قواعد بيانات وثلاث واجهات خلفية منفصلة؟ بالطبع لا! بل يبني مطور الواجهة الخلفية واجهة برمجة تطبيقات () موحدة على الخادم:
- عقل مركزي واحد يخدم كل الشاشات: بدلاً من أن يرسل الخادم صفحات جاهزة تصلح للمتصفح فقط، يوفّر الخادم نقاط وصول للبيانات الخام المنظمة؛ فتتحدث شاشة الموقع وتطبيق الآيفون وتطبيق الأندرويد جميعاً مع نفس الخادم ونفس قاعدة البيانات.
- عقد عمل واضح بين فرق التطوير: يحدد مطور الواجهة الخلفية عنوان الرابط والحقول المطلوبة وشكل النتيجة؛ وبمجرد اعتماد هذا العقد، يعمل مطور الواجهة الأمامية ومطور الهواتف بالتوازي دون انتظار.
- حراسة قاعدة البيانات: لا يُسمح لأي متصفح أو هاتف بالاتصال بقاعدة البيانات مباشرةً أبداً، بل يمر كل طلب عبر بوابة في الخادم أولاً.
كيف ينظم مطور الواجهة الخلفية مئات المسارات البرمجية داخل الخادم دون فوضى؟ يعتمد المطورون على النمط المعماري القياسي REST ()، الذي يوظف طرق وأكواد حالة التي درستها سابقاً بشكل منظم وبديهي:
| طريقة HTTP ومسار نقطة النهاية | العملية المقابلة في الخادم | كود الحالة القياسي عند النجاح |
|---|---|---|
| قراءة () قائمة الدورات التعليمية | ||
| إنشاء () دورة جديدة في قاعدة البيانات | ||
| تحديث () بيانات الدورة رقم | ||
| حذف () الدورة رقم | أو |
لاحظ كيف يبقى اسم المورد في الرابط واضحاً وثابتاً ()، بينما تحدد طريقة نوع العملية المطلوبة، ثم يرد الخادم بحمولة بيانات منظمة بصيغة كما في المثال الآتي:
{
"status": "success",
"course": {
"id": 42,
"title": "Web Technology Fundamentals",
"published": true
}
}
لنفترض أن مطور الواجهة الخلفية انتهى اليوم من برمجة نقطة النهاية لإضافة طلب شراء جديد، لكن مطور الواجهة الأمامية لم يبدأ بعد في تصميم شاشة سلة المشتريات! كيف يختبر مطور الخلفية عمله؟ كتابة الرابط في شريط عنوان المتصفح ترسل طلب فقط، ولا تتيح إرسال طلب محمّل ببيانات ورؤوس رسائل مخصصة.
لهذا السبب يعتمد مطورو الواجهة الخلفية يومياً على أداة اختبار الواجهات الشهيرة Postman (أو بدائلها الخفيفة مثل Insomnia وThunder Client):
- إرسال أي نوع من طلبات بدون شاشة أمامية: يختار المطور داخل طريقة الطلب ( أو أو )، ويكتب عنوان نقطة النهاية وبيانات التجريبية ويضغط إرسال.
- فحص كود الحالة وزمن الاستجابة: يعرض البرنامج فوراً كود الحالة الدقيق ( أو )، وزمن معالجة الطلب بالمللي ثانية، ورؤوس الرسالة، ونتيجة منسقة وملونة.
- حفظ مجموعات الطلبات للفريق (): يحفظ مطور الخلفية جميع نقاط النهاية في مجلدات منظمة داخل ويشاركها مع فريق الواجهة الأمامية ليعرفوا طريقة استدعاء كل ميزة فوراً.
ليست جميع مسارات الخادم متاحة للعامة؛ فبينما يستطيع أي زائر تصفح قائمة الدورات العامة، لا يجوز لأحد فتح صفحة الحساب الشخصي أو تغيير كلمة المرور إلا بعد إثبات هويته. وهنا نصل إلى الركيزة الأولى من ركائز التحكم في الوصول داخل الخادم: المصادقة ( وتُختصر ).
تجيب المصادقة عن سؤال واحد محدد: «من أنت؟» وهي العملية التي يتحقق فيها خادم الواجهة الخلفية من صحة هوية الشخص الذي يحاول الدخول عبر إحدى وسائل الإثبات الآتية:
- 1. شيء تعرفه (): مثل إدخال البريد الإلكتروني وكلمة المرور ومطابقتها داخل الخادم.
- 2. شيء تملكه (): مثل رمز التحقق المؤقت لمرة واحدة () الذي يصل إلى هاتفك في المصادقة الثنائية ().
- 3. تسجيل الدخول عبر مزود هوية موثوق: مثل تسجيل الدخول السريع بحساب Google أو GitHub الموثق.
كما درست في فصل ، فإن البروتوكول عديم الحالة بطبيعته ()؛ أي أن الخادم ينسى من أنت فور انتهاء الاستجابة. فكيف يتذكرك الموقع أثناء تنقلك بين الصفحات دون أن يطلب كلمة المرور في كل ضغطة؟ الطريقة الكلاسيكية المعتمدة في مواقع الويب هي جلسات الخادم التفاعلية ():
- 1. التحقق عند تسجيل الدخول: ترسل بريدك وكلمة مرورك إلى الخادم فيتحقق من صحتهما.
- 2. إنشاء سجل الجلسة داخل الخادم: ينشئ الخادم في ذاكرته أو قاعدة بياناته سجلاً خاصاً بجلسة دخولك، ويرسل للمتصفح رقم الجلسة العشوائي فقط () داخل ملف تعريف ارتباط محمي ().
- 3. إرفاق الكوكي تلقائياً مع كل طلب: في كل ضغطة تالية، يرسل المتصفح ملف الكوكي تلقائياً ضمن رأس الرسالة، فيبحث الخادم عن رقم الجلسة في سجلاته ليعرف هويتك وصلاحياتك فوراً.
بينما تعمل ملفات الكوكيز وجلسات الخادم بكفاءة عالية مع مواقع الويب التقليدية، تفضّل تطبيقات الهواتف الذكية () والواجهات المعتمدة على أسلوباً ثانياً يُعرف باسم المصادقة عديمة الحالة عبر الرموز ():
- بطاقة هوية رقمية موقّعة: بدلاً من حفظ ملف جلسة لكل مستخدم في ذاكرة الخادم، يُصدر الخادم عند تسجيل الدخول رمزاً نصياً مدمجاً () يحتوي على رقم المستخدم ودوره ووقت انتهاء الصلاحية، ومختوماً بتوقيع رقمي سري خاص بالخادم.
- الإرسال في رأس الرسالة (): يحتفظ التطبيق بالرمز ويرسله مع كل طلب إلى واجهة داخل رأس الرسالة بصيغة .
- فحص التوقيع الرياضي فوراً: بمجرد وصول الطلب، يفحص الخادم سلامة الختم الرقمي للرمز ليتأكد أنه صادر منه ولم يتلاعب أحد ببياناته.
شاهد في المثال التوضيحي الآتي كيف يُرسل الرمز في رأس الرسالة وكيف تبدو بياناته الداخلية:
GET /api/orders/my-list HTTP/1.1
Host: api.closetag.test
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjo3fQ.sig
Accept: application/json
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعرّفنا في هذا الدرس على كيفية بناء الخادم لواجهات RESTful APIs الموحدة التي تزود مواقع الويب وتطبيقات الهواتف ببيانات JSON، وكيف يختبر المطور نقاط النهاية بأداة Postman قبل وجود واجهة أمامية، والفرق الجوهري بين المصادقة («من أنت؟» — ) والترخيص والصلاحيات («ماذا يحق لك فعله؟» — )، وآليتي تتبع تسجيل الدخول عبر جلسات الخادم ورموز . الخطوة التالية: انتقل الآن إلى الدرس الخامس (أساسيات أمان الواجهة الخلفية) لنكتشف كيف يحمي الخادم نفسه وبياناته من المدخلات الخبيثة، وكيف يجزّئ كلمات المرور ويمنع ثغرات حقن وتجاوز الصلاحيات !
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات8
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 RESTful API واجهة برمجة التطبيقات القياسية RESTful API
- نمط معماري قياسي لتصميم واجهات البرمجة يوظف طرق وأكواد حالة HTTP ومسارات الموارد الواضحة مع تبادل البيانات بصيغة JSON.
- للمراجعة
- 02 API Endpoint نقطة نهاية البرمجة (API Endpoint)
- مسار رابط محدد على خادم الواجهة الخلفية يستقبل طلبات معينة ويعيد استجابة بيانات منظمة.
- للمراجعة
- 03 Postman أداة اختبار الواجهات Postman
- أداة هندسية تتيح لمطور الواجهة الخلفية إرسال طلبات HTTP تجريبية وفحص استجابات JSON وأكواد الحالة دون الحاجة لوجود شاشة أمامية.
- للمراجعة
- 04 Authentication (AuthN) المصادقة وإثبات الهوية (Authentication)
- عملية التحقق من هوية المستخدم للإجابة عن سؤال «من أنت؟» عبر كلمة المرور أو رموز التحقق الثنائي.
- للمراجعة
- 05 Authorization (AuthZ) الترخيص وتحديد الصلاحيات (Authorization)
- عملية فحص صلاحيات المستخدم بعد إثبات هويته للإجابة عن سؤال «ماذا يُسمح لك بفعله؟» حسب دوره وملكيته للمورد.
- للمراجعة
- 06 Role-Based Access Control (RBAC) التحكم في الوصول المبني على الأدوار (RBAC)
- نموذج تنظيم الصلاحيات عبر إسناد أدوار محددة للمستخدمين (مثل طالب أو مدرب أو مدير) وربط العمليات المسموحة بكل دور.
- للمراجعة
- 07 Stateful Server Session جلسة الخادم التفاعلية (Server Session)
- آلية لتتبع تسجيل الدخول يحفظ فيها الخادم بيانات الجلسة لديه، ويسلّم المتصفح معرّف الجلسة داخل ملف Cookie محمي.
- للمراجعة
- 08 JSON Web Token (JWT) رمز الويب الموقّع (JWT)
- رمز رقمي مدمج وموقّع يصدره الخادم ويرسله التطبيق في رأس الرسالة مع كل طلب لإثبات الهوية دون حفظ جلسة في ذاكرة الخادم.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 REST REST
- Representational State Transfer
- النمط المعماري القياسي لبناء واجهات برمجة التطبيقات عبر بروتوكول HTTP.
- للمراجعة
- 02 JWT JWT
- JSON Web Token
- معيار قياسي لتمرير بيانات الهوية الموقّعة رقمياً بين العميل والخادم بصيغة JSON.
- للمراجعة
- 03 RBAC RBAC
- Role-Based Access Control
- تقييد الوصول والعمليات في النظام بناءً على الدور الوظيفي المسند لحساب المستخدم.
- للمراجعة
- 04 MFA MFA
- Multi-Factor Authentication
- المصادقة متعددة العوامل التي تطلب من المستخدم تقديم وسيلتي إثبات أو أكثر عند تسجيل الدخول.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
اكتب أزواج طريقة HTTP ومسار الرابط الأربعة (GET وPOST وPUT وDELETE) لإدارة مورد الكتب (/api/books) مع تحديد كود الحالة المتوقع لكل عملية.
-
تنقّل بين الحالات 2 و3 و4 في المحاكي التفاعلي، واشرح بأسلوبك لماذا أرجع الخادم كود 401 في الحالة الثانية بينما أرجع كود 403 في الحالة الثالثة.
-
لخّص أين تُحفظ حالة تسجيل الدخول في جلسات الخادم مقارنةً برموز JWT، واذكر لماذا لا يجوز أبداً وضع كلمات المرور داخل حمولة رمز JWT.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.