FastAPI
FastAPI هو إطار عمل ويب لبناء واجهات برمجة تطبيقات (APIs) للخدمات القائمة على بروتوكول HTTP باستخدام بايثون 3.8 والإصدارات الأحدث. [ 3 ] يستخدم Pydantic وتلميحات الأنواع للتحقق من صحة البيانات ، وتسلسلها، وفك تسلسلها. كما يقوم FastAPI تلقائيًا بإنشاء وثائق OpenAPI لواجهات برمجة التطبيقات المبنية بواسطته. [ 4 ] وقد تم إصداره لأول مرة في عام 2018.
عناصر
بايدانتيك
Pydantic هي مكتبة للتحقق من صحة البيانات في بايثون. أثناء كتابة التعليمات البرمجية في بيئة تطوير متكاملة (IDE) ، توفر Pydantic تلميحات لأنواع البيانات بناءً على التعليقات التوضيحية. [ 5 ] يستخدم FastAPI نماذج Pydantic على نطاق واسع للتحقق من صحة البيانات، وتسلسلها، وتوثيق واجهة برمجة التطبيقات (API) تلقائيًا. تستخدم هذه النماذج تلميحات أنواع بايثون القياسية، مما يوفر طريقة تصريحية لتحديد بنية وأنواع البيانات للطلبات الواردة (مثل محتوى HTTP) والاستجابات الصادرة. [ 6 ]
من fastapi استورد FastAPI ومن pydantic استورد BaseModelapp = FastAPI ()class Item ( BaseModel ): name : str price : float is_offer : bool | None = None@ app.post ( " / items/" ) def create_item ( item : Item ): # تم التحقق من صحة كائن ' item' وكتابته مسبقًا return { "message" : " تم استلام العنصر" , "item_name" : item.name }نجمة صغيرة
Starlette عبارة عن إطار عمل/مجموعة أدوات ASGI خفيفة الوزن ، لدعم الوظائف غير المتزامنة في بايثون. [ 7 ]
يوفيكورن
يُعدّ Uvicorn خادم ويب/تطبيقًا بسيطًا منخفض المستوى لأطر العمل غير المتزامنة، ويتبع مواصفات ASGI . من الناحية التقنية، يُطبّق نموذجًا متعدد العمليات مع عملية رئيسية واحدة مسؤولة عن إدارة مجموعة من عمليات العامل وتوزيع طلبات HTTP الواردة عليها. يتم ضبط عدد عمليات العامل مسبقًا، ولكن يمكن أيضًا تعديله بالزيادة أو النقصان أثناء التشغيل. [ 8 ]
تكامل OpenAPI
يقوم FastAPI تلقائيًا بإنشاء وثائق OpenAPI لواجهات برمجة التطبيقات (APIs). تتضمن هذه الوثائق كلاً من Swagger UI و ReDoc ، اللذان يوفران وثائق تفاعلية لواجهات برمجة التطبيقات، مما يتيح لك استكشاف نقاط النهاية واختبارها في الوقت الفعلي. يُعد هذا مفيدًا بشكل خاص لتطوير واجهات برمجة التطبيقات واختبارها ومشاركتها مع مطورين أو مستخدمين آخرين. يمكن الوصول إلى Swagger UI افتراضيًا عبر المسار /docs ، وإلى ReDoc عبر المسار /redoc . [ 9 ]
سمات
العمليات غير المتزامنة
يدعم تصميم FastAPI البرمجة غير المتزامنة بشكلٍ أساسي . يسمح هذا التصميم لحلقة الأحداث أحادية الخيوط بمعالجة عدد كبير من الطلبات المتزامنة بكفاءة، خاصةً عند التعامل مع العمليات التي تعتمد على الإدخال/الإخراج مثل استعلامات قواعد البيانات أو استدعاءات واجهات برمجة التطبيقات الخارجية. للمزيد من المعلومات، راجع نمط async/await .
حقن التبعية
تتضمن FastAPI نظام حقن التبعية (DI) لإدارة وتوفير الخدمات لنقاط نهاية HTTP. تتيح هذه الآلية للمطورين تعريف مكونات مثل جلسات قواعد البيانات أو منطق المصادقة كمعاملات للدوال. تقوم FastAPI تلقائيًا بحل هذه التبعيات لكل طلب، وحقن النسخ اللازمة. [ 10 ]
from fastapi import Depends , HTTPException , status from db import DbSession# --- تبعية جلسة قاعدة البيانات --- def get_db ( ): db = DbSession () try : yield db finally : db.close ( )@ app.post ( " / items/" , status_code = status.HTTP_201_CREATED ) def create_item ( name : str , description : str , db : DbSession = Depends ( get_db ) ): new_item = Item ( name = name , description = description ) db.add ( new_item ) db.commit ( ) db.refresh ( new_item ) return { "message" : " تم إنشاء العنصر بنجاح! " , " item " : new_item }@ app.get ( "/items/ { item_id } " ) def read_item ( item_id : int , db : DbSession = Depends ( get_db ) ) : item = db.query ( Item ) .filter ( Item.id == item_id ) .first ( ) if item is None : raise HTTPException ( status_code = status.HTTP_404_NOT_FOUND , detail = " Item not found " ) return itemدعم WebSockets
تتيح تقنية WebSockets اتصالاً ثنائي الاتجاه بين العميل والخادم. تُعد هذه الميزة أساسية للتطبيقات التي تتطلب تبادلاً مستمراً للبيانات، مثل منصات المراسلة الفورية، ولوحات بيانات البث المباشر، أو الألعاب متعددة اللاعبين عبر الإنترنت. تستفيد FastAPI من تطبيق Starlette الأساسي، مما يسمح بإدارة الاتصالات ومعالجة الرسائل بكفاءة. [ 11 ]
# يجب تثبيت حزمة 'websockets' من fastapi import WebSocket@ app.websocket ( " / ws" ) async def websocket_endpoint ( websocket : WebSocket ) : await websocket.accept ( ) while True : data = await websocket.receive_text ( ) await websocket.send_text ( f " Message text was : { data } " )مهام الخلفية
تُمكّن FastAPI من تنفيذ مهام في الخلفية بعد إرسال استجابة HTTP إلى العميل. وهذا يسمح لواجهة برمجة التطبيقات بالاستجابة الفورية لطلبات المستخدم مع معالجة العمليات غير الحرجة أو التي تستغرق وقتًا طويلاً في الخلفية في الوقت نفسه. تشمل التطبيقات النموذجية إرسال إشعارات البريد الإلكتروني، وتحديث ذاكرة التخزين المؤقت، أو إجراء معالجة لاحقة للبيانات. [ 12 ]
استوردنا المكتبات التالية : time، shutil، BackgroundTasks ، UploadFile ، وFile من مكتبة fastapi، و generate_thumbnail من مكتبة utils .@ app.post ( "/upload-image/" ) async def upload_image ( image : UploadFile = File ( ... ) , background_tasks : BackgroundTasks ): file_location = f " uploaded_images/ { image.filename } " # حفظ الصورة المرفوعة with open ( image_path , " wb " ) as f : contents = await file.read ( ) f.write ( contents )# أضف إنشاء الصورة المصغرة كمهمة في الخلفية background_tasks.add_task ( generate_thumbnail , file_location , " 200x200" )return { "message" : f "تم تحميل الصورة ' { image . filename } '. بدأ إنشاء الصورة المصغرة في الخلفية." }مثال
يوضح الكود التالي تطبيق ويب بسيط يعرض عبارة " Hello, World! " عند زيارته:
# استيراد فئة FastAPI من حزمة fastapi من fastapi import FastAPI# إنشاء نسخة من تطبيق FastAPI app = FastAPI ()# تعريف مسار GET لعنوان URL الرئيسي ("/") @app.get ( " / " ) async def read_root () -> str : # إرجاع استجابة نصية عادية return "Hello, World!"انظر أيضاً
روابط خارجية
مراجع
- ↑ "fastapi repo" . GitHub . 2018-12-05.
- ↑ "الإصدار 0.139.2" . 16 يوليو 2026. تم الاطلاع عليه في 17 يوليو 2026 .
- ↑ "FastAPI" . fastapi.tiangolo.com . تم الاطلاع عليه بتاريخ 10-04-2024 .
- ↑ لوبانوفيتش، بيل (2019-11-06). مقدمة إلى بايثون: الحوسبة الحديثة في حزم بسيطة ( الطبعة الثانية). دار نشر أورايلي ميديا، ص 397، 418. ISBN 9781492051367.
- ↑ "لماذا استخدام Pydantic - Pydantic" . docs.pydantic.dev . تم الاطلاع عليه بتاريخ 21-09-2023 .
- ↑ "نص الطلب - FastAPI" . fastapi.tiangolo.com . تم الاطلاع عليه بتاريخ 30-06-2025 .
- ↑ "ستارليت" . www.starlette.io . تم الاطلاع عليه بتاريخ 21-09-2023 .
- ↑ "إعادة تشغيل عمال 'uvicorn' باستخدام إشارة 'SIGHUP'" . bugfactory.io . تم الاطلاع عليه بتاريخ 17-06-2024 .
- ↑ "وثائق OpenAPI - FastAPI" .
- ↑ "التبعيات" . تم الاطلاع عليه بتاريخ 30 يونيو 2025 .
- ↑ "WebSockets - FastAPI" . fastapi.tiangolo.com . تم الاطلاع عليه بتاريخ 30-06-2025 .
- ↑ "مهام الخلفية - FastAPI" . fastapi.tiangolo.com . تم الاطلاع عليه بتاريخ 30-06-2025 .
- برامج 2018
- أطر عمل الويب بلغة البرمجة بايثون
- برنامج مرخص بموجب ترخيص MIT
- أطر عمل الويب
