"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تحديد نقاط نهاية واجهة برمجة التطبيقات المتعددة مع مسارات مختلفة ونفس المعلمة المسار في fastapi؟

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

نشر في 2025-03-24
تصفح:113

How to Define Multiple API Endpoints with Different Paths and the Same Path Parameter in FastAPI?

تحديد نقاط نهاية واجهة برمجة التطبيقات المتعددة مع مسارات مختلفة ومعلمة المسار نفسها في fastapi

نقطة نهاية API 1 @router.get ("/project/{project_id}/{efferene_id}") async def method_one (project_id: str ، effecte_id: str ، ...): # ... # احصل على نقطة نهاية API 2 @router.get ("/project/تفاصيل/{project_id}") Async def method_two (project_id: str ، ...): # ... # احصل على نقطة نهاية API 3 @router.get ("/project/metadata/{project_id}") Async def method_three (project_id: str ، ...): # ...

في هذا السيناريو ، عندما يتم استدعاء نقاط نهاية API 2 و 3 ، يقومون بتنفيذ طريقة وحدة التحكم المحددة في نقطة النهاية 1 ، وهي method_one (). ويرجع ذلك إلى مدى قيام FastAPI بتقييم نقاط النهاية بالتسلسل. نظرًا لأنه يتم تقييم نقاط النهاية بشكل متتابع ، يجب الإعلان عن نقاط النهاية ذات المسارات الأكثر تحديدًا أولاً. لذلك ، فإن ترتيب الإعلان الصحيح هو:

# GET API Endpoint 1
@router.get("/project/{project_id}/{employee_id}")
async def method_one(project_id: str, employee_id: str, ...):

    # ...

# GET API Endpoint 2
@router.get("/project/details/{project_id}")
async def method_two(project_id: str, ...):

    # ...

# GET API Endpoint 3
@router.get("/project/metadata/{project_id}")
async def method_three(project_id: str, ...):

    # ...
باتباع هذا الترتيب ، عند استدعاء نقاط النهاية 2 و 3 ، سيتم تنفيذ الطرق المقابلة method_two () و method_three () على النحو المقصود.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3