كيفية استخدام FastAPI لبناء خدمات API عالية الأداء
كيفية استخدام FastAPI لبناء خدمات API عالية الأداء
FastAPI هو إطار ويب حديث وسريع (فعال) مصمم خصيصًا لبناء واجهات برمجة التطبيقات (APIs). يعتمد على تلميحات نوع Python ويدعم البرمجة غير المتزامنة، مما يسمح للمطورين ببناء خدمات API عالية الأداء وعالية التوفر مع تأخير منخفض. ستقدم لك هذه المقالة شرحًا تفصيليًا حول كيفية استخدام FastAPI لبناء خدمات API عالية الأداء، وسنقوم بشرح الخطوات بشكل متسلسل لمساعدتك في تحقيق العملية الكاملة من إعداد البيئة إلى النشر.
الخطوة الأولى: إعداد البيئة
يجب عليك التأكد من تثبيت Python 3.6+ في بيئة التطوير الخاصة بك. إذا لم يكن مثبتًا بعد، يمكنك زيارة الموقع الرسمي لـ Python لتنزيله وتثبيته.
تثبيت FastAPI و Uvicorn
لا يوفر FastAPI الخدمة بنفسه، بل يحتاج إلى خادم ASGI لاستضافته. هنا نستخدم Uvicorn، وهو خادم ASGI عالي الأداء. يمكنك استخدام الأمر التالي لتثبيت FastAPI و Uvicorn:
pip install fastapi uvicorn
الخطوة الثانية: بناء API الأساسية
دعنا ننشئ تطبيق FastAPI بسيط.
إنشاء ملف التطبيق
في دليل مشروعك، أنشئ ملف Python، مثل main.py، ثم اكتب فيه الكود التالي:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
في الكود أعلاه، قمنا أولاً باستيراد FastAPI وأنشأنا مثيلًا app. ثم، قمنا بتعريف مسار GET، وعند الوصول إلى المسار الجذري /، يتم إرجاع استجابة JSON بسيطة.
تشغيل الخادم
قم بتشغيل خادم FastAPI الخاص بك باستخدام الأمر التالي:
uvicorn main:app --reload
main: يشير إلى اسم الملف، بدون لاحقة .py.app: يشير إلى مثيل FastAPI.--reload: في وضع التطوير، يتم إعادة تشغيل الخادم تلقائيًا عند تغيير الملفات.
الخطوة الثالثة: تعريف المسارات ونماذج البيانات
لبناء API معقد، تحتاج إلى استخدام Pydantic لتعريف نماذج البيانات.
إنشاء نموذج البيانات
أضف المحتوى التالي إلى main.py:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
هذا الكود يستخدم Pydantic لإنشاء نموذج بيانات Item، الذي يحتوي على ثلاثة خصائص: اسم المنتج، السعر، وما إذا كان متاحًا.
إضافة مسار جديد
بعد ذلك، يمكننا تعريف مسار POST جديد لاستقبال بيانات من نوع Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
في هذا المسار، سيقوم FastAPI بالتحقق تلقائيًا من البيانات المدخلة وتعيينها إلى نموذج Item.
الخطوة الرابعة: توليد الوثائق تلقائيًا
واحدة من أكبر مزايا FastAPI هي القدرة على توليد وثائق API تلقائيًا. يمكنك عرضها من خلال زيارة العناوين التالية:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
في هذه الوثائق المولدة، يمكنك اختبار API بشكل تفاعلي، ورؤية تنسيقات الطلبات والاستجابات لكل مسار.
الخطوة الخامسة: إضافة المصادقة
في التطبيقات العملية، تعتبر المصادقة جزءًا مهمًا. دعنا نضيف مصادقة بسيطة تعتمد على الأدوار.
إضافة تبعيات الأمان
استخدم طريقة Depends من FastAPI وOAuth2PasswordBearer لتنفيذ المصادقة:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def fake_decode_token(token):
return {"sub": token}
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = fake_decode_token(token)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials")
return user
حماية المسارات
بعد ذلك، يمكنك إضافة المصادقة إلى المسارات التي تحتاج إلى حماية:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
الخطوة السادسة: نشر تطبيق FastAPI
عندما تنتهي من التطوير، قد تحتاج إلى نشر التطبيق على خادم سحابي. يمكنك اختيار استخدام Docker للنشر.
إنشاء Dockerfile
في دليل المشروع، أنشئ ملفًا باسم Dockerfile وأدخل المحتوى التالي:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
بناء صورة Docker
في الطرفية الخاصة بك، استخدم الأمر التالي لبناء صورة Docker:
docker build -t myfastapiapp .
تشغيل حاوية Docker
قم بتشغيل تطبيق FastAPI الخاص بك:
docker run -d --name fastapi -p 80:80 myfastapiapp
الخلاصة
في هذه المقالة، شرحنا بالتفصيل كيفية استخدام FastAPI لبناء خدمات API عالية الأداء، بدءًا من إعداد البيئة إلى إنشاء API الأساسية، وتعريف المسارات ونماذج البيانات، ثم إضافة المصادقة والنشر. يوفر FastAPI العديد من الميزات القوية، مما يجعل بناء واجهات برمجة التطبيقات الحديثة أمرًا بسيطًا وفعالًا، يمكنك استكشاف المزيد من الميزات والخصائص من خلال الوثائق الرسمية. نأمل أن تساعدك هذه المقالة في البدء بسرعة مع FastAPI، وتعزيز كفاءة تطوير مشروعك!





