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

Amine
15/09/2024

مع مكتبة requests، يمكنك إرسال طلبات HTTP مثل GET وPOST للتفاعل مع خدمات الويب وواجهات برمجة التطبيقات (APIs) بسهولة.

إرسال طلبات GET

يُستخدم طلب GET لطلب بيانات من مورد محدد. إليك كيفية إرسال طلب GET باستخدام مكتبة requests:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)  # الإخراج: 200
print(response.text)  # الإخراج: محتوى الاستجابة كنص

response.status_code: يعيد رمز حالة HTTP للاستجابة (على سبيل المثال، 200 يعني نجاح العملية).

response.text: يعيد محتوى الاستجابة كنص.

إرسال طلبات POST

يُستخدم طلب POST لإرسال بيانات إلى الخادم لإنشاء أو تحديث مورد. إليك كيفية إرسال طلب POST مع بعض البيانات:

url = 'https://jsonplaceholder.typicode.com/posts'
data = {'title': 'foo', 'body': 'bar', 'userId': 1}

response = requests.post(url, json=data)
print(response.status_code)  # الإخراج: 201
print(response.json())  # الإخراج: جسم الاستجابة بعد تحليله كـ JSON

json=data: يحول تلقائيًا بيانات القاموس إلى سلسلة JSON لاستخدامها في جسم الطلب.

التعامل مع معاملات الاستعلام

يمكنك تضمين معاملات الاستعلام في طلب GET باستخدام معامل params:

url = 'https://jsonplaceholder.typicode.com/posts'
params = {'userId': 1}

response = requests.get(url, params=params)
print(response.url)  # الإخراج: https://jsonplaceholder.typicode.com/posts?userId=1
print(response.json())  # الإخراج: بيانات JSON المفلترة بواسطة userId

التمارين

التمرين 1: اكتب برنامجًا يرسل طلب GET إلى “https://jsonplaceholder.typicode.com/users” ويطبع أسماء وعناوين البريد الإلكتروني لجميع المستخدمين.

import requests

response = requests.get('https://jsonplaceholder.typicode.com/users')
users = response.json()

for user in users:
    print(f"Name: {user['name']}, Email: {user['email']}")

التمرين 2: اكتب برنامجًا يرسل طلب POST إلى “https://jsonplaceholder.typicode.com/posts” لإنشاء منشور جديد مع عنوان ومحتوى، ويطبع الاستجابة.

import requests

url = 'https://jsonplaceholder.typicode.com/posts'
data = {'title': 'New Post', 'body': 'This is a new post.', 'userId': 1}

response = requests.post(url, json=data)
print(response.status_code)  # الإخراج: 201
print(response.json())

التمرين 3: عدل التمرين الأول لإضافة معالجة الأخطاء التي تطبع رسالة خطأ إذا فشل الطلب (مثلًا، إذا لم يكن رمز الحالة 200).

import requests

try:
    response = requests.get('https://jsonplaceholder.typicode.com/users')
    response.raise_for_status()  # Raises an HTTPError if the status is not 200
    users = response.json()

    for user in users:
        print(f"Name: {user['name']}, Email: {user['email']}")
except requests.exceptions.RequestException as e:
    print(f"Error: {e}")

رائع! لقد تعلمت كيفية استخدام مكتبة requests للتفاعل مع خدمات الويب من خلال إرسال طلبات HTTP والتعامل مع الاستجابات. هذه المهارة أساسية للعمل مع واجهات برمجة تطبيقات الويب ودمج تطبيقاتك مع الخدمات الخارجية.

التعليقات

اترك تعليقاً