كيفية كتابة سكربت للتعامل مع API RESTful باستخدام مكتبة requests في Python
تمت الكتابة بواسطة: adel
تارخ آخر تحديث: 21 نوفمبر 2024محتوى المقال
تعتبر API RESTful واحدة من الطرق الشائعة لتقديم خدمات الويب وتبادل البيانات بين الأنظمة المختلفة. في Python، يمكننا استخدام مكتبة requests
للتعامل مع هذه الواجهات البرمجية (APIs) بسهولة. في هذا المقال، سنتعلم كيفية كتابة سكربت في Python للتعامل مع API RESTful باستخدام مكتبة requests
، وسنقوم بتغطية الأساسيات بما في ذلك إرسال الطلبات واستلام الاستجابات ومعالجة البيانات.
ما هي مكتبة requests؟
requests
هي مكتبة بسيطة وقوية في Python تتيح لك إرسال طلبات HTTP إلى خادم الويب واستلام الردود بسهولة. تدعم المكتبة جميع طرق HTTP الشائعة مثل GET وPOST وPUT وDELETE، وتوفر طريقة مريحة للتعامل مع المعاملات والرؤوس (headers) ونصوص الاستجابة (response bodies).
تثبيت مكتبة requests
لتثبيت مكتبة requests
، يمكنك استخدام pip، مدير الحزم في Python:
pip install requests
بعد تثبيت المكتبة، يمكنك البدء في استخدامها للتفاعل مع API RESTful.
إرسال طلب GET
طلب GET هو الطريقة الأكثر شيوعًا لاسترداد البيانات من API. يُستخدم لاسترجاع المعلومات من الخادم دون تغيير أي شيء في البيانات.
مثال على طلب GET
لنقم بإرسال طلب GET إلى API لاسترجاع قائمة من المستخدمين:
import requests
# إرسال طلب GET
response = requests.get('https://jsonplaceholder.typicode.com/users')
# التحقق من نجاح الطلب
if response.status_code == 200:
# طباعة البيانات المستلمة
print(response.json())
else:
print('حدث خطأ:', response.status_code)
في هذا المثال، نقوم بإرسال طلب GET إلى https://jsonplaceholder.typicode.com/users
لاسترجاع قائمة المستخدمين. إذا كان الطلب ناجحًا (status code 200)، نقوم بطباعة البيانات المستلمة.
إرسال طلب POST
طلب POST يُستخدم لإرسال بيانات إلى الخادم لإنشاء مورد جديد. غالبًا ما يُستخدم في النماذج والإدخالات حيث تحتاج إلى إرسال بيانات مثل نصوص، ملفات، إلخ.
مثال على طلب POST
لنقم بإرسال طلب POST لإنشاء مستخدم جديد:
import requests
# إعداد البيانات لإرسالها
data = {
'name': 'John Doe',
'username': 'johndoe',
'email': 'johndoe@example.com'
}
# إرسال طلب POST
response = requests.post('https://jsonplaceholder.typicode.com/users', json=data)
# التحقق من نجاح الطلب
if response.status_code == 201: # 201 Created
# طباعة البيانات المستلمة
print(response.json())
else:
print('حدث خطأ:', response.status_code)
في هذا المثال، نرسل بيانات المستخدم الجديدة إلى API باستخدام طلب POST. إذا كان الطلب ناجحًا وتم إنشاء المستخدم الجديد، نحصل على بيانات المستخدم الجديدة في الرد.
إرسال طلب PUT
طلب PUT يُستخدم لتحديث مورد موجود. يُستخدم هذا الطلب لإرسال بيانات إلى الخادم لتحديث مورد موجود بالفعل.
مثال على طلب PUT
لنقم بإرسال طلب PUT لتحديث بيانات مستخدم موجود:
import requests
# إعداد البيانات لتحديثها
data = {
'name': 'Jane Doe',
'username': 'janedoe',
'email': 'janedoe@example.com'
}
# إرسال طلب PUT لتحديث المستخدم مع ID = 1
response = requests.put('https://jsonplaceholder.typicode.com/users/1', json=data)
# التحقق من نجاح الطلب
if response.status_code == 200:
# طباعة البيانات المستلمة
print(response.json())
else:
print('حدث خطأ:', response.status_code)
في هذا المثال، نقوم بإرسال طلب PUT لتحديث بيانات المستخدم الذي يحمل ID = 1. إذا كان الطلب ناجحًا، نحصل على بيانات المستخدم المحدثة في الرد.
إرسال طلب DELETE
طلب DELETE يُستخدم لحذف مورد معين. يُرسل هذا الطلب لحذف مورد محدد من الخادم.
مثال على طلب DELETE
لنقم بإرسال طلب DELETE لحذف مستخدم معين:
import requests
# إرسال طلب DELETE لحذف المستخدم مع ID = 1
response = requests.delete('https://jsonplaceholder.typicode.com/users/1')
# التحقق من نجاح الطلب
if response.status_code == 200: # 200 OK
print('تم حذف المستخدم بنجاح')
else:
print('حدث خطأ:', response.status_code)
في هذا المثال، نرسل طلب DELETE لحذف المستخدم الذي يحمل ID = 1. إذا كان الطلب ناجحًا، نعرض رسالة تأكيد بحذف المستخدم.
إرسال Headers وParams
في بعض الأحيان، قد تحتاج إلى إرسال رؤوس (headers) أو معاملات (parameters) إضافية مع الطلب. يمكن القيام بذلك بسهولة باستخدام مكتبة requests
.
إرسال رؤوس (Headers)
لنقم بإرسال طلب GET مع إضافة بعض الرؤوس المخصصة:
# إعداد الرؤوس
headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'User-Agent': 'my-app'
}
# إرسال طلب GET مع الرؤوس
response = requests.get('https://api.example.com/data', headers=headers)
# التحقق من نجاح الطلب
if response.status_code == 200:
print(response.json())
else:
print('حدث خطأ:', response.status_code)
في هذا المثال، نرسل طلب GET إلى API مع إضافة رؤوس مخصصة تشمل Authorization
وUser-Agent
.
إرسال معاملات (Params)
يمكنك أيضًا إرسال معاملات URL مع الطلب باستخدام معامل params
:
# إعداد المعاملات
params = {
'page': '2',
'limit': '10'
}
# إرسال طلب GET مع المعاملات
response = requests.get('https://api.example.com/data', params=params)
# التحقق من نجاح الطلب
if response.status_code == 200:
print(response.json())
else:
print('حدث خطأ:', response.status_code)
في هذا المثال، نرسل طلب GET إلى API مع إضافة معاملات URL لتحديد الصفحة والحد الأقصى للنتائج المسترجعة.
التعامل مع الاستجابات
يمكنك التعامل مع استجابات الخادم بطرق متعددة، بما في ذلك استخراج نص الاستجابة، JSON، أو حتى محتويات الملفات.
استخراج JSON من الاستجابة
إذا كان الخادم يعيد البيانات بتنسيق JSON، يمكنك استخدام دالة json()
لتحويل الاستجابة إلى كائن Python:
# استخراج JSON من الاستجابة
data = response.json()
print(data)
استخراج نص الاستجابة
إذا كنت تحتاج إلى نص الاستجابة كـ string، يمكنك استخدام دالة text()
:
# استخراج نص الاستجابة
text = response.text
print(text)
الخاتمة
مكتبة requests
في Python توفر طريقة سهلة وقوية للتعامل مع RESTful APIs. سواء كنت بحاجة إلى إرسال طلبات GET أو POST أو PUT أو DELETE، يمكنك القيام بذلك بسهولة باستخدام requests
. كما يمكنك تخصيص الطلبات بإضافة رؤوس ومعاملات والتعامل مع الاستجابات بطرق متعددة. نأمل أن يكون هذا المقال قد قدم لك فهماً شاملاً لكيفية كتابة سكربت للتعامل مع RESTful APIs في Python.
طور مهاراتك: مقالات يجب قراءتها في البرمجة
- كيفية استخدام مكتبة subprocess لتنفيذ أوامر النظام في Python
- كيفية استخدام مكتبة PyGame لتطوير الألعاب في Python
- كتابة سكربت لتحميل الملفات من الإنترنت باستخدام urllib في Python
- كيفية إنشاء قنوات اتصال باستخدام مكتبة asyncio.Queue في Python
- كيفية استخدام مكتبة boto3 للتفاعل مع خدمات AWS في Python
- كيفية إدارة وتحليل البيانات باستخدام مكتبة Dask في Python
- كيفية التعامل مع ملفات الصوت باستخدام مكتبة pydub في Python
- كيفية إنشاء خريطة موقع Sitemap XML
- كيفية تقسيم النصوص باستخدام دالة split() في Python
- كيفية دمج النصوص باستخدام دالة join() في Python