يستخرج FastAPI معاملات المسار (جزء من مسار URL) ومعاملات الاستعلام (بعد ?) من وسيطات الدالة، باستخدام تلميحات النوع لتحويلها والتحقق منها تلقائياً.
معاملات المسار — جزء من URL
():
{: item_id}
يستخرج FastAPI معاملات المسار (جزء من مسار URL) ومعاملات الاستعلام (بعد ?) من وسيطات الدالة، باستخدام تلميحات النوع لتحويلها والتحقق منها تلقائياً.
():
{: item_id}
معامل الدالة الذي يطابق اسمه {placeholder} في المسار يصبح معامل مسار. تلميح النوع (int) يحول السلسلة من URL تلقائياً ويعيد خطأ واضح 422 إذا لم تطابق.
@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
# parameters NOT in the path become QUERY parameters
# GET /items?skip=20&limit=5&q=phone → skip=20, limit=5, q="phone"
return {"skip": skip, "limit": limit, "q": q}
معاملات الدالة غير الموجودة في المسار تصبح معاملات استعلام. القيمة الافتراضية تجعلها اختيارية (skip: int = 0)؛ str | None = None يجعل معامل استعلام اختياري قابل للقيمة الفارغة. بدون قيمة افتراضية، تكون مطلوبة.
def search(q: str): # REQUIRED query param (no default) → ?q=... must be present
def search(q: str = ""): # optional, defaults to ""
def search(q: str | None = None): # optional, defaults to None
@app.get("/users/{user_id}/items")
def user_items(user_id: int, limit: int = 10):
# user_id = path param, limit = query param — distinguished by the path
معاملات المسار والاستعلام هي كيفية استقبال نقاط النهاية للإدخال من URL — أساسي لأي مسار API تقريباً (جلب مورد باستخدام المعرّف، التصفية، الترقيم، البحث).
نهج FastAPI أنيق وسبب رئيسي لإنتاجيته: الإعلان البسيط عن معاملات الدالة المكتوبة يمنحك الاستخراج التلقائي وتحويل النوع والتحقق (مع أخطاء 422 واضحة على الإدخال السيء) ودلالات المطلوب مقابل الاختياري (عبر القيم الافتراضية) — كل شيء مشتق من تلميحات نوع Python القياسية، بدون تحليل يدوي.
فهم الفرق (معاملات المسار تأتي من {placeholders}، كل شيء آخر هو معامل استعلام) وكيف تتحكم القيم الافتراضية في الاختيارية هو معرفة أساسية يومية لبناء نقاط نهاية FastAPI.