إنشاء تطبيق ويب ديناميكي باستخدام FastAPI في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 19 ديسمبر 2024

محتوى المقال

إنشاء تطبيق ويب ديناميكي باستخدام FastAPI في Python

إذا كنت تبحث عن طريقة سريعة وفعالة لبناء تطبيقات ويب ديناميكية وحديثة في Python، فإن FastAPI هو الإطار المثالي لك. يُعتبر FastAPI من أفضل الخيارات المتاحة لبناء واجهات برمجة التطبيقات (APIs) بفضل سرعته العالية ودعمه القوي لمعايير REST. في هذا المقال، سنستعرض كيفية إنشاء تطبيق ويب ديناميكي باستخدام FastAPI من البداية وحتى تشغيله.

ما هو FastAPI؟

FastAPI هو إطار عمل حديث لبناء تطبيقات ويب وواجهات برمجة تطبيقات سريعة في Python. يتميز بسرعته الكبيرة في التنفيذ ودعمه للعديد من الميزات الحديثة مثل التحقق من البيانات تلقائيًا، التوثيق التفاعلي، ودعم معيار OpenAPI. يمكن استخدام FastAPI لتطوير تطبيقات ويب معقدة بسرعة وكفاءة، مع تقليل عدد الأخطاء البرمجية بفضل نوع التحقق القوي (type hinting) المتكامل في Python.

تثبيت FastAPI و Uvicorn

لبدء العمل مع FastAPI، نحتاج أولاً إلى تثبيته بالإضافة إلى Uvicorn، وهو خادم ASGI خفيف وسريع لتشغيل تطبيقات FastAPI:

pip install fastapi uvicorn

إنشاء تطبيق ويب بسيط باستخدام FastAPI

بعد تثبيت FastAPI، سنبدأ بإنشاء تطبيق ويب بسيط يتضمن نقطة نهاية واحدة ترحب بالمستخدمين. دعونا ننشئ ملفًا جديدًا باسم main.py ونكتب فيه الكود التالي:

from fastapi import FastAPI

# إنشاء تطبيق FastAPI
app = FastAPI()

# إنشاء نقطة نهاية ترحب بالمستخدم
@app.get("/")
def read_root():
    return {"message": "مرحبًا بك في تطبيق FastAPI الخاص بنا!"}

في هذا المثال البسيط، قمنا بإنشاء تطبيق FastAPI مع نقطة نهاية واحدة عند الجذر / التي تعرض رسالة ترحيب عند زيارتها.

تشغيل التطبيق باستخدام Uvicorn

لتشغيل التطبيق، نستخدم Uvicorn كخادم لتطبيق FastAPI. في سطر الأوامر، يمكنك تشغيل التطبيق باستخدام الأمر التالي:

uvicorn main:app --reload

الأمر --reload يسمح بإعادة تحميل التطبيق تلقائيًا عند إجراء تغييرات على الكود، مما يجعل التطوير أسرع وأسهل.

إضافة نقاط نهاية متعددة ومعالجة المدخلات

لنقم بتوسيع التطبيق بإضافة نقاط نهاية متعددة ومعالجة المدخلات من المستخدم. سنقوم بإنشاء نقطتي نهاية جديدتين، إحداهما تأخذ اسم المستخدم وتعيد تحية مخصصة، والأخرى تقوم بحساب جمع رقمين.

إضافة نقطة نهاية لتحية مخصصة

لإضافة نقطة نهاية تستقبل اسم المستخدم وتعيد رسالة ترحيب مخصصة:

@app.get("/greet/{name}")
def greet_user(name: str):
    return {"message": f"مرحبًا، {name}!"}

عند زيارة /greet/{name} حيث {name} هو اسم المستخدم، ستقوم هذه النقطة بإعادة رسالة ترحيب مخصصة.

إضافة نقطة نهاية لحساب جمع رقمين

الآن سنضيف نقطة نهاية تقوم بحساب جمع رقمين يتم إدخالهما كمعلمات URL:

@app.get("/add")
def add_numbers(a: int, b: int):
    sum_result = a + b
    return {"sum": sum_result}

يمكنك زيارة /add?a=5&b=10 وستحصل على نتيجة الجمع للرقمين 5 و10.

التعامل مع الطلبات POST ومعالجة البيانات

بالإضافة إلى التعامل مع الطلبات GET، يمكنك أيضًا إنشاء نقاط نهاية تتعامل مع الطلبات POST، والتي تُستخدم عادة لإرسال البيانات إلى الخادم. سننشئ نقطة نهاية لتسجيل بيانات المستخدم.

إضافة نموذج بيانات

أولاً، سنستخدم Pydantic لإنشاء نموذج بيانات للتحقق من المدخلات:

from pydantic import BaseModel

class User(BaseModel):
    username: str
    email: str
    age: int

هذا النموذج يحدد شكل البيانات التي نتوقعها من المستخدم.

إضافة نقطة نهاية لتسجيل المستخدم

الآن سنضيف نقطة نهاية تستقبل بيانات المستخدم عبر طلب POST:

@app.post("/register")
def register_user(user: User):
    return {"message": f"تم تسجيل المستخدم {user.username} بنجاح!"}

عند إرسال طلب POST إلى /register مع بيانات المستخدم، ستقوم هذه النقطة بتسجيل البيانات وإرجاع رسالة تأكيد.

إضافة التوثيق التفاعلي

من أفضل الميزات التي يقدمها FastAPI هي التوثيق التفاعلي المدمج. بمجرد تشغيل التطبيق، يمكنك زيارة /docs للحصول على توثيق تلقائي وتفاعلي لواجهات برمجة التطبيقات (APIs) الخاصة بك.

عرض التوثيق

للحصول على التوثيق التفاعلي، قم بتشغيل التطبيق وانتقل إلى http://127.0.0.1:8000/docs في متصفحك. ستجد توثيقًا شاملاً لجميع نقاط النهاية المتاحة، بما في ذلك المعلمات المطلوبة والردود المتوقعة.

نشر التطبيق على خادم

بعد الانتهاء من تطوير تطبيق الويب الخاص بك، قد ترغب في نشره على خادم ليكون متاحًا للمستخدمين. يمكنك نشر تطبيق FastAPI بسهولة على العديد من منصات الاستضافة مثل Heroku، DigitalOcean، أو AWS.

النشر على Heroku

لنشر تطبيقك على Heroku، اتبع الخطوات التالية:

  • أنشئ ملف Procfile يحتوي على السطر التالي:
  • web: uvicorn main:app --host 0.0.0.0 --port $PORT
  • قم بإنشاء مشروع جديد على Heroku.
  • قم بدفع (push) الكود إلى Heroku باستخدام Git.
  • بعد الإعداد، سيكون التطبيق متاحًا عبر الإنترنت.

خاتمة

يعتبر FastAPI من أفضل الأدوات لبناء تطبيقات ويب ديناميكية وحديثة بسرعة وكفاءة. بفضل سهولة الاستخدام، الأداء العالي، والدعم المدمج للتوثيق التفاعلي، يمكنك بناء تطبيقات قوية وقابلة للتوسع بسهولة. نأمل أن يكون هذا المقال قد قدم لك فهمًا جيدًا حول كيفية البدء باستخدام FastAPI لتطوير تطبيقات الويب الخاصة بك.

طور مهاراتك: مقالات يجب قراءتها في البرمجة