بناء واجهات برمجة تطبيقات قوية باستخدام FastAPI و MongoDB

تعلم كيفية بناء واجهات برمجة تطبيقات سريعة وفعالة باستخدام FastAPI وMongoDB. يغطي هذا الدليل الشامل كل شيء بدءًا من إعداد بيئتك إلى إنشاء واختبار النقاط النهائية، مما يضمن لك تطوير تطبيقات قوية وقابلة للتطوير.

Amir Hassan

Amir Hassan

13 أغسطس 2025

بناء واجهات برمجة تطبيقات قوية باستخدام FastAPI و MongoDB

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

في عالم التكنولوجيا المدفوع اليوم، يعتبر بناء واجهات برمجة التطبيقات السريعة والفعّالة والقابلة للتوسع أمراً حاسماً للمطورين. واحدة من التركيبات القوية التي تكتسب شعبية هي استخدام FastAPI مع MongoDB. FastAPI، كما يوحي اسمها، هو إطار عمل ويب حديث عالي الأداء لبناء واجهات برمجة التطبيقات باستخدام بايثون 3.7+ سريع في الكتابة والتنفيذ. في هذه الأثناء، MongoDB هو قاعدة بيانات NoSQL معروفة بقدرتها على التوسع ومرونتها. معاً، يوفران حلاً قويًا لإنشاء واجهات برمجة التطبيقات التي يمكن أن تتعامل مع أي شيء من مشروع صغير إلى تطبيق كبير الحجم.

إذًا، لماذا يجب أن تفكر في هذه الثنائي لمشروعك القادم؟ دعنا نغوص في التفاصيل!

البدء: إعداد بيئتك

قبل أن نبدأ في بناء واجهة برمجة التطبيقات الخاصة بنا، دعونا نعد بيئتنا. ستحتاج إلى تثبيت بايثون على نظامك، مع pip لإدارة الحزم.

إطار عمل FastAPI، عالي الأداء، سهل التعلم، سريع في الكتابة، جاهز للإنتاج

الخطوة 1: تثبيت FastAPI و Uvicorn

أولاً، دعنا نثبت FastAPI. افتح الطرفية الخاصة بك وقم بتشغيل الأمر التالي:

pip install fastapi

بعد ذلك، سنقوم بتثبيت Uvicorn، وهو تنفيذ خادم ASGI لبايثون، والذي سيخدم تطبيق FastAPI الخاص بنا:

pip install uvicorn

الخطوة 2: تثبيت Motor

Motor هو المشغل غير المتزامن لـ MongoDB الذي يعمل بسلاسة مع FastAPI. لتثبيته، قم بتشغيل:

pip install motor

رائع! الآن لدينا كل ما نحتاجه للبدء في الكتابة.

إنشاء أول تطبيق FastAPI الخاص بك

الآن، دعنا نخلق تطبيق FastAPI أساسي ونربطه بـ MongoDB.

الخطوة 1: تهيئة تطبيق FastAPI

أنشئ ملف بايثون جديد (دعنا نسميه main.py) وابدأ باستيراد FastAPI وتهيئة التطبيق:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "مرحبًا بك في برنامج الدروس FastAPI مع MongoDB!"}

هذا الكود يُعد تطبيق FastAPI أساسي بواجهة نقطة نهاية واحدة.

الموقع الرسمي لـ mongoDB

الخطوة 2: الاتصال بـ MongoDB

الآن، دعنا نربط تطبيق FastAPI الخاص بنا بـ MongoDB باستخدام Motor. سننشئ ملفاً جديداً يسمى database.py لإدارة اتصال القاعدة البيانات.

from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)
database = client.mydatabase

في هذا المثال، نتصل بنسخة MongoDB تعمل محلياً. تأكد من تثبيت MongoDB وتشغيله على نظامك.

الخطوة 3: تعريف نماذج Pydantic

نماذج Pydantic هي طريقة رائعة لتعريف هياكل البيانات وضمان التحقق من صحة البيانات في FastAPI. أنشئ ملف models.py:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    description: str
    price: float
    available: bool = True

هذا النموذج يحدد هيكل العنصر في مخزوننا.

إنشاء نقاط نهاية واجهة برمجة التطبيقات

مع إعداد الأساس بعيدًا عن الطريق، دعنا ننشئ بعض نقاط نهاية واجهة برمجة التطبيقات للتفاعل مع قاعدة بيانات MongoDB الخاصة بنا.

الخطوة 1: إنشاء مجموعة العناصر

أولاً، نحتاج إلى مجموعة في قاعدة بيانات MongoDB الخاصة بنا لتخزين العناصر. في main.py، دعنا نخلق نقطة نهاية لإضافة عناصر جديدة إلى قاعدة البيانات:

from fastapi import FastAPI, HTTPException
from database import database
from models import Item
from bson import ObjectId

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
    item_dict = item.dict()
    result = await database["items"].insert_one(item_dict)
    item_dict["_id"] = str(result.inserted_id)
    return item_dict

تتيح لنا هذه النقطة النهاية إنشاء عناصر جديدة في مجموعة MongoDB. لاحظ كيف نقوم بتحويل المعرف المدخل إلى سلسلة لمزيد من القابلية للقراءة.

الخطوة 2: استرداد العناصر

بعد ذلك، سنقوم بإنشاء نقطة نهاية لاسترداد جميع العناصر من قاعدة البيانات:

@app.get("/items/")
async def get_items():
    items = await database["items"].find().to_list(1000)
    for item in items:
        item["_id"] = str(item["_id"])
    return items

تقوم هذه النقطة النهاية بجلب جميع العناصر من مجموعة items وتحويل معرفاتها إلى سلاسل.

الخطوة 3: استرداد عنصر واحد

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

@app.get("/items/{item_id}")
async def get_item(item_id: str):
    item = await database["items"].find_one({"_id": ObjectId(item_id)})
    if item:
        item["_id"] = str(item["_id"])
        return item
    raise HTTPException(status_code=404, detail="العنصر غير موجود")

تقوم هذه النقطة النهاية بجلب عنصر بواسطة معرّفه وإعادته، أو تثير خطأ 404 إذا لم يتم العثور على العنصر.

الخطوة 4: تحديث عنصر

تحديث عنصر أمر سهل مع FastAPI و Motor. أضف الكود التالي لتحديث عنصر بواسطة معرّفه:

@app.put("/items/{item_id}")
async def update_item(item_id: str, item: Item):
    result = await database["items"].update_one(
        {"_id": ObjectId(item_id)}, {"$set": item.dict()}
    )
    if result.modified_count == 1:
        updated_item = await database["items"].find_one({"_id": ObjectId(item_id)})
        updated_item["_id"] = str(updated_item["_id"])
        return updated_item
    raise HTTPException(status_code=404, detail="العنصر غير موجود")

تقوم هذه النقطة النهاية بتحديث عنصر بواسطة معرّفه وإعادة العنصر المحدّث.

الخطوة 5: حذف عنصر

أخيرًا، دعنا نضيف نقطة نهاية لحذف عنصر بواسطة معرّفه:

@app.delete("/items/{item_id}")
async def delete_item(item_id: str):
    result = await database["items"].delete_one({"_id": ObjectId(item_id)})
    if result.deleted_count == 1:
        return {"message": "تم حذف العنصر"}
    raise HTTPException(status_code=404, detail="العنصر غير موجود")

تقوم هذه النقطة النهاية بحذف عنصر وإرجاع رسالة نجاح أو خطأ 404 إذا لم يتم العثور على العنصر.

كيفية الاتصال بقاعدة بيانات MongoDB إلى Apidog

  1. انقر على "معالجة العمليات" في واجهة برمجة التطبيقات واختر "عمليات قاعدة البيانات".
انقر على "معالجة العمليات" في واجهة برمجة التطبيقات واختر "عمليات قاعدة البيانات".

2. انقر "إدارة اتصال قاعدة البيانات" في صندوق القائمة المنسدلة تحت "اتصال قاعدة البيانات"، ثم انقر على زر "جديد" في الزاوية العلوية اليمنى.

انقر على "إدارة اتصال قاعدة البيانات"

3. اختر نوع قاعدة بيانات MongoDB، ثم املأ معلومات الاتصال المقابلة.

اختر نوع قاعدة بيانات MongoDB
💡
Apidog تعطي أهمية لأمان بياناتك. عنوان قاعدة البيانات، البورت، اسم المستخدم، كلمة المرور، اسم قاعدة البيانات مخزنة محليًا فقط على العميل ولن تتم مزامنتها مع السحابة. حتى داخل نفس الفريق، معلومات الاتصال لقواعد البيانات لن تتم مزامنتها بين الأعضاء. يحتاج كل عضو في الفريق إلى إعداد اتصال قاعدة البيانات يدويًا.

إدارة قاعدة بيانات MongoDB

تخزن MongoDB البيانات في تنسيق مستند BSON. لتسهيل استخدام معظم المستخدمين، عند تعديل قواعد بيانات MongoDB في Apidog، قدم ملفات بتنسيق JSON. سيقوم النظام تلقائيًا بربط كل حقل بنوع البيانات BSON المقابل بناءً على المحتوى الفعلي لـ JSON.

من بينها، حقل _id يعتبر خاصًا نسبيًا. وفقًا لمواصفات MongoDB، يجب أن تحتوي كل مستند على حقل _id كمفتاح أساسي، والنوع الافتراضي للبيانات لهذا الحقل هو ObjectId بدلاً من String.

إذا كنت بحاجة إلى إعلان حقل _id من نوع ObjectId، يمكنك استخدام تنسيق السلسلة التقليدي. إذا كان محتوى السلسلة يتوافق مع تنسيق ObjectId، فسوف تقوم Apidog تلقائيًا بربطه بنوع ObjectId في BSON.

افترض أن هناك مثل هذا المستند BSON في MongoDB الآن:

{    _id: ObjectId('6569a36afcf5ee79c08d2f94'),    name: "Apidog"}

لذا عند استخدام Apidog للاستعلام عن المستند عبر _id، فإن القيمة JSON التي تحتاج إلى إدخالها في "شروط الاستعلام" هي:

{    "_id": "6569a36afcf5ee79c08d2f94"  }

العمليات الشائعة

لدعم العمليات الشائعة CRUD، عبر عمليات واجهة برمجة التطبيقات المرئية. لا حاجة لكتابة أي تعليمات برمجية جافا سكريبت، فقط حدد الإجراء في "نوع العملية"، ثم حدد "اسم المجموعة"، ثم اكتب المحتوى المقابل بتنسيق JSON في "شروط الاستعلام".

على سبيل المثال، بالنسبة لعملية الاستعلام المذكورة أعلاه، يمكنك عرض المستند المسترد في وحدة التحكم بعد إدخال الأمر وتمكين "مسجل وحدة التحكم".

اكتب المحتوى المقابل بتنسيق JSON في "شروط الاستعلام" في Apidog

الأوامر المتقدمة

إذا كنت بحاجة إلى المزيد من العمليات المتقدمة، يمكنك أيضًا تشغيل أوامر قاعدة البيانات مباشرة. في "نوع العملية"، اختر "تنفيذ أمر قاعدة البيانات" ثم أدخل أمر قاعدة البيانات بتنسيق JSON. لاحظ أن أمر قاعدة البيانات لا يشير إلى استدعاءات الأساليب مثل db.collection.findOne()، ولكن البيانات بتنسيق JSON معين.

على سبيل المثال، للاستعلام عن عدد المستندات في مجموعة المستخدمين، يمكنك استخدام أمر قاعدة البيانات count:

{    "count": "users"}

بعد إدخال الأمر، يمكنك عرض النتيجة في وحدة التحكم.

تنفيذ أوامر قاعدة البيانات

اختبار واجهة برمجة التطبيقات الخاصة بك

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

استخدام Apidog للاختبار

Apidog هي أداة قوية لتطوير واختبار واجهات برمجة التطبيقات التي تبسط عملية إنشاء واختبار وإدارة واجهات برمجة التطبيقات. إليك كيف يمكنك استخدام Apidog لاختبار تطبيق FastAPI MongoDB الخاص بك:

  1. إنشاء مشروع جديد: افتح عميل Apidog وأنشئ مشروعًا جديدًا في Apidog.
إنشاء مشروع جديد في Apidog

2 إضافة نقاط نهاية: أضف نقاط النهاية التي أنشأتها (/items/، /items/{item_id}، إلخ) إلى المشروع.

إضافة نقاط نهاية في Apidog

3. إرسال الطلبات: استخدم الأداة لإرسال طلبات GET وPOST وPUT وDELETE إلى نقاط النهاية الخاصة بك ومراقبة الردود.

إرسال الطلبات في Apidog

4. التحقق من الردود: تأكد من أن الردود تطابق المخرجات المتوقعة، واستخدم رسائل الخطأ التفصيلية لإصلاح أي مشكلات.

التحقق من الردود في Apidog

الخاتمة

في هذا البرنامج التعليمي، غطينا أساسيات إعداد تطبيق FastAPI مع MongoDB. أنشأنا واجهة برمجة تطبيقات مخزون بسيطة تتيح لك إنشاء واسترداد وتحديث وحذف العناصر. سرعة وسهولة استخدام FastAPI، إلى جانب مرونة وقابلية توسع MongoDB، تجعلها ثنائيًا مثاليًا لبناء واجهات برمجة التطبيقات القوية.

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

إذن، ما الذي تنتظره؟ انغمس في FastAPI و MongoDB، وابدأ في بناء واجهات برمجة تطبيقات رائعة اليوم!

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات