ما هو FastAPI
FastAPI هو إطار عمل ويب حديث وعالي الأداء لبناء واجهات API بلغة Python. تم تطويره بواسطة سيباستيان راميريز، ويعتمد هذا الإطار على معايير OpenAPI و JSON Schema، مما يضمن توليدًا تلقائيًا للتوثيق والتحقق من أنواع البيانات.
يستخدم FastAPI أحدث إمكانيات Python، بما في ذلك التعليقات التوضيحية للأنواع (type hints) والبرمجة غير المتزامنة، مما يجعله واحدًا من أسرع أطر Python لتطوير واجهات API. من حيث الأداء، فهو يُقارن بـ Node.js و Go، مما يجعله خيارًا ممتازًا للتطبيقات عالية التحميل.
الميزات الرئيسية لـ FastAPI
أداء عالٍ
تم بناء FastAPI على Starlette للجزء الخاص بالويب و Pydantic للتحقق من البيانات. وهذا يضمن أداءً على مستوى أسرع أطر Python. يدعم الإطار بالكامل ASGI (واجهة بوابة الخادم غير المتزامنة)، مما يسمح بمعالجة آلاف الاتصالات المتزامنة.
توليد تلقائي للتوثيق
من أبرز ميزات FastAPI هو التوليد التلقائي للتوثيق التفاعلي لواجهات API. يقوم الإطار بإنشاء توثيق بتنسيق OpenAPI (Swagger) ويوفر واجهتين:
- Swagger UI – متاح على الرابط
/docs - ReDoc – متاح على الرابط
/redoc
دعم كامل للأنواع
يستخدم FastAPI التعليقات التوضيحية القياسية للأنواع في Python للتحقق من البيانات، وتسلسلها، وتوليد التوثيق تلقائيًا. وهذا يضمن دعمًا ممتازًا للإكمال التلقائي في بيئات التطوير ويقلل من عدد الأخطاء أثناء التطوير.
التحقق المدمج من البيانات
بفضل التكامل مع Pydantic، يقوم FastAPI تلقائيًا بالتحقق من البيانات الواردة، وتحويل الأنواع، وإرجاع رسائل خطأ واضحة. وهذا يبسط عملية التطوير بشكل كبير ويزيد من موثوقية التطبيقات.
البرمجة غير المتزامنة بشكل افتراضي
يدعم FastAPI بالكامل البرمجة غير المتزامنة باستخدام async/await. وهذا يسمح ببناء تطبيقات عالية الأداء قادرة على معالجة العديد من الطلبات المتزامنة.
التثبيت والإعداد الأساسي
تثبيت FastAPI
لتثبيت FastAPI وجميع التبعيات الضرورية، استخدم الأمر التالي:
pip install fastapi[all]
سيقوم هذا الأمر بتثبيت FastAPI مع Uvicorn (خادم ASGI) وتبعيات مفيدة أخرى.
للتثبيت الأدنى، استخدم:
pip install fastapi
pip install uvicorn[standard]
إنشاء أول تطبيق
قم بإنشاء ملف main.py مع تطبيق أساسي:
from fastapi import FastAPI
app = FastAPI(
title="مشروع FastAPI الخاص بي",
description="هذا مثال على تطبيق FastAPI",
version="1.0.0"
)
@app.get("/")
async def root():
return {"message": "مرحبًا بك في FastAPI!"}
@app.get("/health")
async def health_check():
return {"status": "ok"}
تشغيل التطبيق
قم بتشغيل خادم التطوير باستخدام Uvicorn:
uvicorn main:app --reload --host 0.0.0.0 --port 8000
خيارات التشغيل:
--reload– إعادة التحميل التلقائي عند تغيير الكود--host 0.0.0.0– قبول الاتصالات من جميع عناوين IP--port 8000– المنفذ لتشغيل الخادم
العمل مع طرق HTTP
يدعم FastAPI جميع طرق HTTP القياسية من خلال الديكورات المناسبة:
طلبات GET
@app.get("/items/{item_id}")
async def get_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
@app.get("/items/")
async def get_items(skip: int = 0,