محتويات الدورة

FastAPI / المتوسط: تكامل التطبيق والأمن / الدرس 9

الموجهات وOpenAPI وتطور العقد

نظم العمليات بوحدات صريحة وتحقق من المخطط ضمن API ثابتة دون عد التوثيق إذنا.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح افتراضات وحدود موضوع «الموجهات وOpenAPI وتطور العقد».
  • فسر المثالين الكاملين وعلل المخرجات الملاحظة.
  • شخص الإخفاقات وطبق الحلول المشروحة مع وضوح ملكية الهوية والحالة ودورة الحياة.

تركيب المسارات دون بدء العالم

تجمع APIRouter عمليات ببادئة وتبعيات ووسوم وردود، ولا ينبغي لاستيرادها اتصال أوعمال أوبنية مفاجئة. يختبر المثال المسار المرقم، ولا تعني البادئة توافقا تلقائيا. افصل البناء والبدء واحقن الموارد؛ وتفيد الوحدات بمسؤولية لا تشتيت معتم يخفي الأمن والمعاملة.

python فحص موجه ومعرف كامل
from fastapi import APIRouter, FastAPI
from fastapi.testclient import TestClient
router = APIRouter(prefix="/v1/items", tags=["items"])
@router.get("/{item_id}", operation_id="read_item_v1")
def read_item(item_id: int): return {"id": item_id}
app = FastAPI()
app.include_router(router)
with TestClient(app) as client:
    print(client.get("/v1/items/4").json())
print(app.openapi()["paths"]["/v1/items/{item_id}"]["get"]["operationId"])
الناتج المتوقع
{'id': 4}
read_item_v1

تنتج البادئة المسار والمعرف المختار، وتغير الوسوم التنظيم لا الصلاحية.

قراءة OpenAPI المولدة كعقد معلن

تولد الوثيقة من التصريحات المدعومة للمدخل والرد والأمن. يفحص المثال مرجع الرد والمطلوب بلا خادم كدليل تصريح لا تنفيذ إذن أوذرية. قارنه بطلب فعلي، فقد يكسر البديل والصرامة والمجهول والشكل والحد العميل رغم ثبات اسم الدالة.

python فحص مخطط رد بالذاكرة كامل
from fastapi import FastAPI
from pydantic import BaseModel
class PublicItem(BaseModel):
    id: int
    name: str
app = FastAPI()
@app.get("/item", response_model=PublicItem)
def item(): return {"id": 1, "name": "pen"}
schema = app.openapi()
reference = schema["paths"]["/item"]["get"]["responses"]["200"]["content"]["application/json"]["schema"]["$ref"]
print(reference.endswith("/PublicItem"))
print(schema["components"]["schemas"]["PublicItem"]["required"])
الناتج المتوقع
True
['id', 'name']

يشير الرد للنموذج ويتطلب الحقلين دون طلب، ولا يثبت المخطط معنى العمل.

الحفاظ على هوية العملية والخطأ

قد تعتمد الأدوات على معرف العملية والاسم والرد؛ فثبت الفريد واختبره. الوسوم تنظيم لا إذن، والتصريح برد لا ينفذه. وثق شكل الخطأ المخصص، وراجع كشف الداخل وحق الوصول للتوثيق حسب النشر، لا وعد افتراضي لا يطابق الفعل.

تقييم التوافق من منظور العميل

قد يكسر المطلوب الجديد وتضييق النطاق والحذف وتغير الهوية. وقد يتأثر عميل صارم بالاختياري الجديد؛ فافهم العقد لا الشعار. استخدم سياسة انتقال وإهمال وتوافق بيانات، ولا تبرر v1 تغييرها صامتا. يكشف الفرق مرشحا وتحتاج الدلالة والأمن اختبارات سلوك.

معاملة التوثيق دليلا مرقما

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

الأخطاء الشائعة وإصلاحها

يفترض تنفيذ خطأ موثق

لماذا يحدث؟
اختلطت البيانات بالمنطق.
كيف تصلحه؟
نفذ واختبر الفرع.
كيف تتجنب تكراره؟
قارن المخطط والسلوك.

تعد البادئة إثبات توافق

لماذا يحدث؟
حل الاسم محل مراجعة العقد.
كيف تصلحه؟
راجع العميل والانتقال.
كيف تتجنب تكراره؟
اجمع فرق المخطط واختبار الدلالة.

يتصل استيراد الموجه بخدمة فعلية

لماذا يحدث؟
أخفت آثار الوحدة البدء.
كيف تصلحه؟
انقل المورد لحياة مملوكة.
كيف تتجنب تكراره؟
اختبر البناء بلا خدمات.

اختبر فهمك

1. يصير حقل مطلوبا وتبقى v1. هل التوافق تلقائي؟

اعرض الحل المشروح

لا؛ يفشل عميل قديم. راجع الانتقال واختبر الشكل السابق ووضح التغيير؛ فلا يحفظ الاسم سلوكا تغير.

2. لماذا تختبر معرف العملية عند توليد العملاء؟

اعرض الحل المشروح

قد تعتمد الأسماء والتكاملات عليها فيكسر التكرار أوالتغيير الأداة رغم الرد. عاملها عقدا عاما حين يعتمد العميل.

أهم ما تعلمته

  • تجمع APIRouter عمليات ببادئة وتبعيات ووسوم وردود، ولا ينبغي لاستيرادها اتصال أوعمال أوبنية مفاجئة.
  • قد تعتمد الأدوات على معرف العملية والاسم والرد؛ فثبت الفريد واختبره.
  • سجل الإصدار والمخطط والاختبار والهوية معا وافحص فرقا موجزا وطلبات قبول ورفض.

المراجع الرسمية