كيفية كتابة سكربت للتعامل مع API RESTful باستخدام مكتبة requests في Python

تمت الكتابة بواسطة: adel

تارخ آخر تحديث: 21 نوفمبر 2024

محتوى المقال

كيفية كتابة سكربت للتعامل مع API RESTful باستخدام مكتبة requests في Python

تعتبر 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.

طور مهاراتك: مقالات يجب قراءتها في البرمجة