فهم HTTP ومبادئ REST API

فهم HTTP ومبادئ REST API

55 دقيقة
١٤ يونيو ٢٠٢٦
المرحلة 1 من 6

مقدمة: ما هو HTTP ولماذا نحتاجه؟

الدرس 11: فهم HTTP ومبادئ REST API

مرحباً بك في الدرس الحادي عشر من سلسلة تعلم بايثون من الصفر حتى بناء API عملي. بعد أن تعلمنا أساسيات بايثون وكيفية إدارة الحزم، حان الوقت الآن لفهم كيف تتواصل التطبيقات مع بعضها عبر الإنترنت. في هذا الدرس، سنتعرف على بروتوكول HTTP ومبادئ REST API، وهما الأساس الذي ستبني عليه مشروعك العملي.

ما هو HTTP؟

HTTP هو اختصار لـ HyperText Transfer Protocol، وهو البروتوكول الذي تستخدمه المتصفحات والتطبيقات للتواصل مع الخوادم. ببساطة، هو لغة التواصل بين العميل (مثل متصفحك) والخادم (مثل موقع ويب).

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

مكونات طلب HTTP

كل طلب HTTP يتكون من عدة أجزاء رئيسية:

  • الطريقة (Method): تحدد نوع العملية التي تريد تنفيذها. أشهر الطرق هي GET (للحصول على بيانات) و POST (لإرسال بيانات جديدة).
  • المسار (Path): عنوان المورد الذي تطلبه، مثل /users أو /tasks.
  • الرؤوس (Headers): معلومات إضافية عن الطلب، مثل نوع البيانات المقبولة أو رمز التوثيق.
  • الجسم (Body): البيانات التي ترسلها مع الطلب، وتستخدم عادة مع طرق POST أو PUT.

مكونات استجابة HTTP

عندما يرد الخادم، يرسل:

  • رمز الحالة (Status Code): رقم يخبرك بنتيجة الطلب. مثلاً 200 يعني نجاح، 404 يعني غير موجود، 500 يعني خطأ في الخادم.
  • الرؤوس (Headers): معلومات عن الاستجابة.
  • الجسم (Body): البيانات الفعلية التي طلبتها، غالباً بصيغة JSON.

ما هو REST API؟

REST API هو أسلوب لتصميم واجهات برمجة التطبيقات (APIs) باستخدام مبادئ HTTP. REST تعني Representational State Transfer. الهدف هو جعل API بسيطاً وقابلاً للتوسع.

المبادئ الأساسية لـ REST:

  • استخدام طرق HTTP بشكل صحيح: GET للقراءة، POST للإنشاء، PUT للتحديث، DELETE للحذف.
  • المسارات تعبر عن الموارد: مثل /tasks للمهام، /users للمستخدمين.
  • عديم الحالة (Stateless): كل طلب مستقل ولا يعتمد على طلبات سابقة.
  • استخدام JSON: تنسيق البيانات الأكثر شيوعاً في REST APIs.

مثال عملي: محاكاة طلب HTTP باستخدام بايثون

لنكتب كوداً بسيطاً يرسل طلب HTTP حقيقي إلى خادم تجريبي. سنستخدم مكتبة requests التي تعلمنا تثبيتها في الدرس السابق.

# مثال: إرسال طلب GET إلى خادم تجريبي
import requests

# عنوان الخادم التجريبي
url = "https://jsonplaceholder.typicode.com/posts/1"

# إرسال الطلب
response = requests.get(url)

# طباعة رمز الحالة
print(f"رمز الحالة: {response.status_code}")

# طباعة البيانات المستلمة
print("البيانات:")
print(response.json())

عند تشغيل هذا الكود، سترى رمز الحالة 200 (نجاح) وبيانات JSON تحتوي على معلومات عن منشور تجريبي.

شرح الكود خطوة بخطوة

1. نستورد مكتبة requests التي تسمح لنا بإرسال طلبات HTTP بسهولة.

2. نحدد عنوان URL الذي نريد الاتصال به. في هذا المثال، نستخدم خادماً تجريبياً يوفر بيانات وهمية.

3. نستخدم الدالة requests.get() لإرسال طلب GET. هذه الدالة ترجع كائن استجابة.

4. نطبع رمز الحالة باستخدام response.status_code. الرقم 200 يعني أن الطلب نجح.

5. نستخدم response.json() لتحويل البيانات المستلمة من JSON إلى قاموس بايثون، ثم نطبعها.

أخطاء شائعة

  • نسيان تثبيت المكتبة: تأكد من تثبيت requests باستخدام pip install requests.
  • عدم التحقق من رمز الحالة: دائماً تحقق من response.status_code قبل استخدام البيانات.
  • محاولة تحويل استجابة فارغة إلى JSON: إذا كان رمز الحالة 204 (لا محتوى)، لا تحاول استخدام response.json().
نقطة مهمة: في REST API، كل مسار يمثل مورداً محدداً. مثلاً /tasks يمثل قائمة المهام، بينما /tasks/1 يمثل مهمة محددة برقم 1. هذا التصميم يجعل API سهل الفهم والاستخدام.

مثال متقدم: إرسال طلب POST

لنرى كيف نرسل بيانات جديدة إلى الخادم باستخدام طلب POST:

# مثال: إرسال طلب POST لإنشاء مورد جديد
import requests

url = "https://jsonplaceholder.typicode.com/posts"

# البيانات التي نريد إرسالها
new_post = {
    "title": "درس HTTP",
    "body": "هذا محتوى الدرس",
    "userId": 1
}

# إرسال الطلب مع البيانات
response = requests.post(url, json=new_post)

# طباعة رمز الحالة والبيانات الجديدة
print(f"رمز الحالة: {response.status_code}")
print("المورد الجديد:")
print(response.json())

في هذا المثال، نستخدم requests.post() ونمرر البيانات باستخدام الوسيط json=. الخادم سينشئ مورداً جديداً ويرد برمز الحالة 201 (تم الإنشاء).

لماذا نحتاج HTTP و REST API؟

تخيل أنك تريد بناء تطبيق لإدارة المهام. المستخدمون يحتاجون إلى:

  • عرض قائمة المهام (GET /tasks)
  • إضافة مهمة جديدة (POST /tasks)
  • تحديث مهمة موجودة (PUT /tasks/1)
  • حذف مهمة (DELETE /tasks/1)

بدون HTTP و REST API، سيكون من المستحيل بناء تطبيق ويب أو تطبيق جوال يتواصل مع خادم مركزي. هذا هو الأساس الذي ستبني عليه مشروعك في الدروس القادمة.

تمرين صغير

التمرين: اكتب كود بايثون يقوم بما يلي:
  1. إرسال طلب GET إلى https://jsonplaceholder.typicode.com/users
  2. طباعة رمز الحالة
  3. طباعة أسماء المستخدمين الثلاثة الأوائل فقط

تلميح: استخدم response.json() لتحويل البيانات إلى قائمة، ثم استخدم التقطيع (slicing) للحصول على العناصر الثلاثة الأولى.

في الدرس القادم، سننتقل إلى التطبيق العملي ونتعلم كيفية تثبيت FastAPI وإنشاء أول endpoint حقيقي. استعد لبناء أول API لك!

جاري تحميل التقييمات...