إذا كنت تغوص في عالم تطوير الويب الحديث، فاحتمال أنك سمعت عن FastAPI. إنه واحد من أسرع الأطر نموًا لبناء واجهات برمجة التطبيقات في بايثون. في هذه التدوينة، سنستكشف كيفية استخدام FastAPI لإنشاء والتعامل مع طلبات POST. سواء كنت مطورًا متمرسًا أو مبتدئًا، ستساعدك هذه الإرشادات على فهم الأساسيات وما بعدها.
ما هو FastAPI؟
FastAPI هو إطار عمل ويب حديث وسريع (عالي الأداء) لبناء واجهات برمجة التطبيقات باستخدام بايثون 3.7+ استنادًا إلى تلميحات نوع بايثون القياسية. تم تصميمه ليكون سهل الاستخدام ولتوفير أداء عالي يتماشى مع Node.js و Go. كما أن الإطار سهل الفهم وبسيط، مما يجعله خيارًا ممتازًا للمبتدئين والخبراء على حد سواء.
لماذا نستخدم FastAPI؟
هناك عدة أسباب تجعل المطورين يختارون FastAPI على الأطر الأخرى:
- السرعة: FastAPI سريع. في الواقع، إنه واحد من أسرع أطر الويب المتاحة اليوم.
- سهولة الاستخدام: مع الوثائق التفاعلية التلقائية (بفضل Swagger UI و ReDoc)، من السهل جدًا اختبار واجهات برمجة التطبيقات الخاصة بك.
- تحقق من صحة البيانات: يستخدم FastAPI Pydantic للتحقق من صحة البيانات، مما يضمن أن البيانات التي تتلقاها واجهتك صحيحة.
- جاهز للاستخدام غير المتزامن: يدعم البرمجة غير المتزامنة من الصندوق، مما يجعله مناسبًا لتطبيقات الويب الحديثة عالية الأداء.

إعداد FastAPI
قبل أن نغوص في طلبات POST، دعنا نعد FastAPI بسرعة. ستحتاج إلى تثبيت بايثون على نظامك. ثم، يمكنك تثبيت FastAPI وخادم ASGI، مثل Uvicorn، باستخدام pip:
pip install fastapi uvicorn
بمجرد أن يكون لديك FastAPI مثبتًا، يمكنك إنشاء تطبيق FastAPI بسيط. لنبدأ بإنشاء ملف يسمى main.py:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
لتشغيل التطبيق، استخدم Uvicorn:
uvicorn main:app --reload
افتح متصفحك وانتقل إلى http://127.0.0.1:8000. يجب أن ترى استجابة JSON: {"Hello": "World"}.

إنشاء نقطة نهاية POST
الآن بعد أن أصبح لدينا تطبيق FastAPI الأساسي يعمل، دعنا نضيف نقطة نهاية POST. تُستخدم طلبات POST لتقديم البيانات ليتم معالجتها إلى مورد محدد. للتعامل مع طلب POST في FastAPI، تستخدم @app.post الزخرفة.
إليك مثال بسيط عن كيفية التعامل مع طلب POST:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
@app.post("/items/")
def create_item(item: Item):
return item
في هذا المثال:
- نقوم بتعريف مثيل لـ
FastAPI. - نحن ننشئ نموذج Pydantic
Itemالذي يصف هيكل بيانات جسم الطلب. - نستخدم
@app.postالزخرفة لتعريف نقطة نهاية POST/items/. - تأخذ وظيفة
create_itemكائنItemكمدخل وتعيده.
لاختبار ذلك، يمكنك استخدام عميل API مثل apidog أو ببساطة استخدام واجهة Swagger التفاعلية المقدمة من FastAPI على http://127.0.0.1:8000/docs.
التعامل مع البيانات والتحققات
يتحقق FastAPI تلقائيًا من بيانات الطلب مقابل نموذج Pydantic. إذا لم تتوافق البيانات مع النموذج، يقوم FastAPI بإعادة رمز الحالة 422 مع تفاصيل حول أخطاء التحقق.
على سبيل المثال، إذا قمت بإرسال طلب POST إلى /items/ مع جسم JSON التالي:
{
"name": "اسم العنصر",
"price": 25.5
}
سيقبل FastAPI هذا الطلب لأنه يستوفي متطلبات نموذج Item. ومع ذلك، إذا قمت بإغفال حقل price، فسيرفض FastAPI الطلب ويعيد خطأ.
استخدام Apidog لاختبار طلب POST الخاص بك في FastAPI
Apidog هو أداة قوية لاختبار واجهات برمجة التطبيقات. يتيح لك إنشاء وحفظ طلبات واجهة برمجة التطبيقات، وتنظيمها في مجموعات، ومشاركتها مع فريقك.
إليك كيف يمكنك استخدام Apidog لاختبار طلب POST الخاص بك:
- افتح Apidog وأنشئ طلبًا جديدًا.

2. قم بتعيين طريقة الطلب إلى POST.

3. أدخل عنوان URL للمورد الذي تريد تحديثه. أضف أي رؤوس أو معلمات إضافية تريد تضمينها ثم انقر على زر "إرسال" لإرسال الطلب.

4. تحقق من أن الاستجابة هي ما كنت تتوقعه.

طلبات POST المتقدمة
الآن، دعنا نستكشف بعض السيناريوهات الأكثر تقدمًا. يسمح لك FastAPI بعمل الكثير مع طلبات POST. على سبيل المثال، يمكنك:
- التعامل مع تحميل الملفات: استخدم
FileوUploadFileمنfastapi. - معالجة بيانات النماذج: استخدم
Formمنfastapi. - استخدام معلمات المسار: دمج
path parametersمع طلبات POST.
التعامل مع تحميل الملفات
إليك مثال عن كيفية التعامل مع تحميل الملفات باستخدام FastAPI:
from fastapi import FastAPI, File, UploadFile
app = FastAPI()
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile):
return {"filename": file.filename}
ستقبل هذه النقطة نهاية ملفًا وتعيد اسم الملف. يمكنك اختبار ذلك باستخدام apidog أو واجهة Swagger.
معالجة بيانات النماذج
لإجراء معالجة بيانات النموذج، استخدم فئة Form من FastAPI:
from fastapi import FastAPI, Form
app = FastAPI()
@app.post("/login/")
def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}
يخلق هذا المثال نقطة نهاية تسجيل دخول تقبل بيانات النموذج. يمكنك اختبار ذلك باستخدام إرسال نموذج في متصفحك أو أداة اختبار API.
استخدام معلمات المسار
يمكنك أيضًا دمج معلمات المسار مع طلبات POST:
from fastapi import FastAPI
app = FastAPI()
@app.post("/users/{user_id}/items/")
def create_item_for_user(user_id: int, item: Item):
return {"user_id": user_id, "item": item}
تنشئ هذه النقطة نهاية عنصرًا لمستخدم معين، يتم التعرف عليه بواسطة معلمة مسار user_id.
الخاتمة
FastAPI هو إطار قوي يجعل من السهل بناء واجهات برمجة تطبيقات قوية باستخدام بايثون. دعمها للتحقق من البيانات، الوثائق التفاعلية، والأداء العالي يجعلها خيارًا ممتازًا لتطوير الويب الحديث.
في هذه التدوينة، غطينا كيفية إعداد تطبيق FastAPI والتعامل مع طلبات POST. كما استكشفنا مواضيع أكثر تقدمًا مثل تحميل الملفات، ومعالجة بيانات النماذج، ودمج معلمات المسار مع طلبات POST. بحلول الآن، يجب أن تكون لديك فهم قوي لكيفية استخدام FastAPI لإنشاء والتعامل مع طلبات POST.
تذكر، سواء كنت تبني واجهة برمجة تطبيقات بسيطة أو تطبيق معقد، فإن FastAPI يحتوي على الأدوات التي تحتاجها للنجاح. ش coding سعيد!
