FastAPI / الأساسي: HTTP والحدود ذات الأنواع / الدرس 6
التبعيات وتركيب التطبيق
استخدم الحقن لسياق طلب وموارد مملوكة دون إخفاء أمن أوحالة عامة متغيرة.
في هذه الصفحة
أهداف الدرس
- اشرح افتراضات وحدود موضوع «التبعيات وتركيب التطبيق».
- فسر المثالين الكاملين وعلل المخرجات الملاحظة.
- شخص الإخفاقات وطبق الحلول المشروحة مع وضوح ملكية الهوية والحالة ودورة الحياة.
التبعية عقد دالة صريح
تصرح التبعية بقيمة أوفحص قبل العملية وقد تعتمد على أخرى. يظهر الرسم الاستخراج والهوية والإعداد والملكية، ولا تصير تلقائيا singleton أومهمة أوإذنا. صغرها وسم مسؤوليتها. يستخرج المثال لغة مدعومة ويرفض غيرها قبل المعالج، كسياق عرض لا هوية أوصلاحية موثوقة.
from typing import Annotated
from fastapi import Depends, FastAPI, Header, HTTPException
from fastapi.testclient import TestClient
def locale(x_lab_locale: Annotated[str, Header()] = "en"):
if x_lab_locale not in {"en", "ar"}:
raise HTTPException(status_code=400, detail="Unsupported locale")
return x_lab_locale
app = FastAPI()
@app.get("/greeting")
def greeting(value: Annotated[str, Depends(locale)]): return {"locale": value}
with TestClient(app) as client:
print(client.get("/greeting", headers={"X-Lab-Locale": "ar"}).json())
print(client.get("/greeting", headers={"X-Lab-Locale": "xx"}).status_code)
{'locale': 'ar'}
400
تسلم التبعية اللغة أوتوقف 400، وليست الترويسة اعتماد هوية.
فصل الحقن والصلاحية
تفرض التبعية الأمن بتنفيذ وربط صحيحين لا بمجرد استخراج رمز أومعرف ترويسة. تحتاج صلاحية المورد الهدف والفاعل الموثوق لا تسجيل دخول عام. افصل المدخل وسياق الخادم وراجع نطاق التطبيق والموجه والمسار؛ فقد يكشف المتجاوز رغم تعقيد الرسم.
إسناد العمر والتنظيف بوعي
تسلم بعض التبعيات موردا وتنظفه ويتعلق التوقيت بالتدفق والخلفية، وسنختبره. لا تحتفظ بطلب أوجلسة عامة وتتوقع أمان الحقن، ولا تقرأ بيئة متغيرة خفية بكل مساعد؛ احقن كائنا متحققا أومزودا مضبوطا. تجنب دورة وتشابكا يخفيان الخطأ والملكية.
اختبار الاستبدال وحدود الطلب
تفيد البدائل لمستودع وساعة وهوية وعميل آمنين؛ وأزلها بعد الاختبار ولا تختبر البديل وحده. أبق حد HTTP والتحقق حقيقيين. تستخدم الأمثلة تطبيقا معزولا وترويسات وعدّادا بلا خارج، وافحص السماح والرفض وعدم تسرب السياق بين الطلبات. يفيد الحقن بعقد مفهوم لا يلغي العمر والأثر.
الأخطاء الشائعة وإصلاحها
تعد ترويسة محللة مستخدما موثقا
- لماذا يحدث؟
- اختلط الاستخراج بالمصادقة.
- كيف تصلحه؟
- استخدم محققا موثوقا وصلاحية مورد.
- كيف تتجنب تكراره؟
- اختبر المزور والغائب بحده.
تتسرب حالة الطلب بمورد عام
- لماذا يحدث؟
- افترض إدارة كل عام.
- كيف تصلحه؟
- حدد موردا بمالك وعمر.
- كيف تتجنب تكراره؟
- اختبر الطلبات والتنظيف مستقلة.
يبقى البديل باختبارات لاحقة
- لماذا يحدث؟
- لم يسجل تنظيفه.
- كيف تصلحه؟
- أعد الربط في finally.
- كيف تتجنب تكراره؟
- استخدم تطبيقا معزولا وتنظيفا متوقعا.
اختبر فهمك
1. يعتمد معاملان على الدالة نفسها. هل تعمل مرتين دائما؟
اعرض الحل المشروح
لا؛ يعاد الناتج عادة بالطلب وفق الخيار والهوية، لا كذاكرة عامة أوضمان أثر آمن؛ فوضح العمل المؤثر.
2. من أين يأتي معرف المستخدم لفحص الملكية؟
اعرض الحل المشروح
من فاعل وثقه الخادم لا حقل يدعي الملكية. اقرأ الهدف وطبق سياسة العملية؛ فشكل المعرف لا يمنح سلطة.
أهم ما تعلمته
- تصرح التبعية بقيمة أوفحص قبل العملية وقد تعتمد على أخرى.
- تفرض التبعية الأمن بتنفيذ وربط صحيحين لا بمجرد استخراج رمز أومعرف ترويسة.
- تفيد البدائل لمستودع وساعة وهوية وعميل آمنين؛ وأزلها بعد الاختبار ولا تختبر البديل وحده.