ما هي مكتبة requests ولماذا تحتاجها؟
مكتبة requests هي واحدة من أشهر وأسهل مكتبات Python لإجراء طلبات HTTP. توفر واجهة بسيطة لإرسال طلبات GET و POST و PUT و DELETE وغيرها من أنواع طلبات HTTP بأقل قدر من الكود.
المزايا الرئيسية لمكتبة requests
- سهولة التركيب وواجهة برمجية بديهية
- دعم مدمج للجلسات وإدارة الكوكيز
- معالجة تلقائية لبيانات JSON والنماذج
- دعم طرق المصادقة المختلفة
- إمكانية العمل مع خوادم البروكسي
- توثيق شامل بالعربية والإنجليزية
- دعم نشط من مجتمع المطورين
تثبيت مكتبة requests
يتم تثبيت مكتبة requests عبر مدير الحزم pip. تعتمد طريقة التثبيت على إصدار Python الذي تستخدمه.
التثبيت القياسي
pip install requests
التثبيت لـ Python 3
إذا كان لديك عدة إصدارات من Python مثبتة، استخدم الأمر pip3 للتثبيت في بيئة Python 3:
pip3 install requests
التحقق من التثبيت
بعد التثبيت، يمكنك التحقق من نجاح العملية باستيراد المكتبة في وحدة تحكم Python:
import requests
print(requests.__version__)
أساسيات طلبات GET
تُستخدم طلبات GET لجلب البيانات من خادم الويب. هذا هو النوع الأكثر شيوعًا من طلبات HTTP في تطوير الويب.
طلب GET بسيط
import requests
response = requests.get('https://api.github.com')
print(response.status_code) # حالة الاستجابة (200 - OK)
print(response.text) # نص الاستجابة
تحليل استجابة الخادم
عند العمل مع طلبات GET، من المهم تحليل الاستجابة بشكل صحيح. يحتوي كائن response على العديد من الخصائص المفيدة:
status_code- حالة HTTP للاستجابةtext- محتوى الاستجابة كنصcontent- محتوى الاستجابة بالبايتheaders- رؤوس الاستجابةurl- عنوان URL النهائي للطلب
العمل مع معاملات الطلب
يمكن تمرير معاملات URL عبر قاموس، مما يجعل الكود أكثر قابلية للقراءة والتعديل:
params = {
'q': 'python programming',
'page': 2,
'limit': 50
}
response = requests.get('https://www.example.com/search', params=params)
print(response.url) # عرض عنوان URL المُنشأ مع المعاملات
طلبات POST وإرسال البيانات إلى الخادم
تُستخدم طلبات POST لإرسال البيانات إلى الخادم، مثل تعبئة النماذج أو إنشاء سجلات جديدة في قاعدة البيانات.
إرسال بيانات النموذج
data = {
'username': 'admin',
'password': '12345',
'email': 'admin@example.com'
}
response = requests.post('https://httpbin.org/post', data=data)
print(response.text)
إرسال بيانات JSON
عند العمل مع واجهات API الحديثة، غالبًا ما تحتاج لإرسال البيانات بتنسيق JSON. تقوم مكتبة requests تلقائيًا بتعيين Content-Type الصحيح عند استخدام المعامل json:
import json
data = {
'name': 'John Doe',
'age': 30,
'city': 'Cairo'
}
response = requests.post('https://httpbin.org/post', json=data)
result = response.json() # تحويل تلقائي للاستجابة إلى JSON
print(result)
الفرق بين معاملي data و json
- المعامل
dataيرسل البيانات كنموذج (application/x-www-form-urlencoded) - المعامل
jsonيرسل البيانات بتنسيق JSON (application/json)