الخلاصة والمصادر
الخلاصة
- 1. واجهات RESTful API: موارد بأسماء واضحة، والمنهج يحمل الفعل (
GETقراءة،POSTإنشاء،PUT/DELETEمتكافئان)، ورمز الحالة يقول الحقيقة (201 إنشاء، 204 بلا جسم، 401 هوية، 403 صلاحية). استهلك بـcurl و requests (معtimeout)، ابنِ بـFlask، أمّن بـHTTPS وتذاكر وبصمات كلمات المرور، ووثّق العقد بـOpenAPI. - 2. البرمجة غير المتزامنة: معظم البطء انتظار لا حساب؛
async defتعرّف كوروتينًا وawaitيعيد الدور لحلقة الأحداث. مجرد كتابة async لا تربح شيئًا، الربح منgather(نتائج بترتيب الوسائط) أوas_completed(بترتيب الانتهاء)، وcreate_taskيبدأ العمل فورًا. وأي استدعاء محجوب داخل كوروتين يجمّد كل شيء. - 3. المولدات والاشتمالات غير المتزامنة: وجود
yieldفي دالةasyncيجعلها مولّدًا غير متزامن لا كوروتينًا، فتستهلكه بـasync forأو باشتمال[v async for v in src]، وتعلّق عليهAsyncGenerator[Y, None]بوسيطين فقط. الاشتمال اختصار صياغة لا توازيًا: الانتظارات داخل المصدر متسلسلة، والتوازي يأتي منgatherبين مصادر مستقلة.
قاموس المصطلحات
| المصطلح | التعريف | الجزء |
|---|---|---|
| REST | أسلوب معماري للخدمات فوق HTTP يعامل الأشياء كموارد لها عناوين ويتبع قيودًا ستة | 1 |
| Resource (مورد) | أي شيء له عنوان URL ويمكن تمثيله (مشروب، طلب، مستخدم) | 1 |
| Safe / Idempotent | الآمن لا يغيّر حالة الخادم؛ عدم التأثر بالتكرار يعني أن تكرار الطلب يعطي نفس الأثر النهائي | 1 |
| Status code (رمز الحالة) | رقم من ثلاث خانات يلخّص نتيجة الطلب (2xx نجاح، 4xx خطأ العميل، 5xx خطأ الخادم) | 1 |
| Endpoint | مسار + فعل HTTP معًا (مثل GET /drinks/3) | 1 |
| Header (ترويسة) | زوج اسم/قيمة يصف الطلب أو الاستجابة (Content-Type و Authorization) | 1 |
| curl | أداة طرفية لإرسال طلبات HTTP وفحص الاستجابات | 1 |
| Authentication / Authorization | الأولى: من أنت؟ والثانية: ماذا يُسمح لك؟ (401 مقابل 403) | 1 |
| Bearer token | رمز يُرسل في ترويسة Authorization ويمنح حامله الصلاحية؛ فلا يُسرَّب | 1 |
| JWT | رمز من ثلاثة أجزاء (ترويسة.حمولة.توقيع) موقَّع لكنه غير مشفّر | 1 |
| OpenAPI | صيغة لوصف الواجهة (مساراتها ومعاملاتها واستجاباتها) في ملف YAML أو JSON | 1 |
| Coroutine (كوروتين) | دالة معرّفة بـasync def تستطيع التوقف عند await ثم تُستأنف من نفس السطر بكل متغيّراتها | 2 |
| Event loop (حلقة الأحداث) | الحلقة التي توزّع الدور على المهام الجاهزة وتنام حين لا يكون أحد جاهزًا؛ تُفتح بـasyncio.run | 2 |
await | ينفّذ قابلًا للانتظار ويُعيد الدور للحلقة أثناء انتظاره؛ ممنوع خارج دالة async | 2 |
| Task | كوروتين جُدول في الحلقة فبدأ فورًا، ويمكن إلغاؤه بـcancel() وسؤاله بـdone() | 2 |
gather / as_completed | الأول يشغّل الكل ويُرجع النتائج بترتيب الوسائط؛ والثاني يسلّمك كل واحدة لحظة انتهائها | 2 |
| I/O-bound / CPU-bound | بطء سببه الانتظار مقابل بطء سببه الحساب؛ الأول علاجه asyncio والثاني multiprocessing | 2 |
| التزامن مقابل التوازي | التزامن تنقّل بين الأعمال في خيط واحد؛ والتوازي تنفيذ فعلي في نفس اللحظة على أنوية متعددة | 2 |
| CancelledError | الاستثناء الذي يصل داخل المهمة عند إلغائها، ولهذا يصلح finally للتنظيف بعده | 2 |
| Async generator | دالة async def فيها yield؛ نوعها async_generator وليست كوروتينًا ولا يصحّ await أمامها | 3 |
async for | حلقة تطلب العنصر التالي بـ__anext__ وتعيد الدور للحلقة بين كل عنصرين | 3 |
| الاشتمال غير المتزامن | [v async for v in src]: اختصار صياغة لحلقة async for، ويعمل في القوائم والمجموعات والقواميس | 3 |
| StopAsyncIteration | الاستثناء الذي يُعلن نهاية التكرار غير المتزامن، وتلتقطه حلقة async for نيابة عنك | 3 |
AsyncGenerator[Y, S] | تعليق نوع المولّد غير المتزامن بوسيطين فقط؛ لا وسيط إرجاع لأنه لا يُرجع قيمة نهائية | 3 |
aclose() | إغلاق مولّد غير متزامن لم يُستهلك حتى نهايته، حتى يصل كود التنظيف في finally | 3 |
| SSR | بناء HTML على الخادم وإرساله جاهزًا. | 4 |
| قالب | HTML فيه أماكن تُملأ بالبيانات. | 4 |
| الهروب التلقائي | تحويل الرموز الخاصة لنص آمن قبل العرض. | 4 |
| WebSocket | اتصال واحد مفتوح يرسل فيه الطرفان متى شاءا. | 5 |
| Upgrade | ترويسة HTTP تطلب تحويل الاتصال لـ WebSocket. | 5 |
| البث | إرسال الرسالة لكل المتصلين. | 5 |
مصادر هذا الدرس
مرتّبة بالنوع. ابدأ بالتوثيق الرسمي إذا تبي المرجع الدقيق، وبالمقال أو الفيديو إذا تبي الشرح أولًا.
توثيق رسمي2
خلّصت الدرس؟
سجّل الدخول ليُحفظ تقدّمك.