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

الخطوة 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 أساسي بواجهة نقطة نهاية واحدة.

الخطوة 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
- انقر على "معالجة العمليات" في واجهة برمجة التطبيقات واختر "عمليات قاعدة البيانات".

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

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

إدارة قاعدة بيانات 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. لاحظ أن أمر قاعدة البيانات لا يشير إلى استدعاءات الأساليب مثل db.collection.findOne()، ولكن البيانات بتنسيق JSON معين.
على سبيل المثال، للاستعلام عن عدد المستندات في مجموعة المستخدمين، يمكنك استخدام أمر قاعدة البيانات count:
{ "count": "users"}بعد إدخال الأمر، يمكنك عرض النتيجة في وحدة التحكم.

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

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

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

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

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