راهنمای استفاده از requests در پایتون

در این راهنما، نحوه استفاده از کتابخانه requests در پایتون برای ارسال درخواست‌های GET و POST را با مثال‌های عملی توضیح می‌دهیم.

۱. نصب کتابخانه requests

اگر requests روی سیستم شما نصب نیست، می‌توانید با استفاده از pip آن را نصب کنید:

pip install requests

۲. ارسال درخواست GET

درخواست GET برای دریافت داده از یک سرور استفاده می‌شود. مثال زیر محتوای یک API عمومی را دریافت می‌کند:

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"
response = requests.get(url)

if response.status_code == 200:
    print("داده دریافت شد:", response.json())
else:
    print("خطا در دریافت داده:", response.status_code)

توضیحات کد:

  • requests.get(url): یک درخواست GET به URL مشخص‌شده ارسال می‌کند.
  • response.status_code: وضعیت پاسخ را برمی‌گرداند (200 یعنی موفقیت‌آمیز).
  • response.json(): پاسخ JSON را به یک دیکشنری پایتونی تبدیل می‌کند.

۳. ارسال درخواست GET با پارامتر

برای ارسال پارامتر در یک درخواست GET می‌توان از دیکشنری params استفاده کرد:

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

response = requests.get(url, params=params)

if response.status_code == 200:
    print("داده‌های فیلترشده:", response.json())
else:
    print("خطا در دریافت داده:", response.status_code)

توضیحات:

  • مقدار params به انتهای URL اضافه می‌شود (?userId=1).
  • داده‌های بازگشتی مربوط به userId مشخص‌شده خواهد بود.

۴. ارسال درخواست POST

درخواست POST برای ارسال داده به سرور استفاده می‌شود. مثال زیر یک پست جدید به یک API ارسال می‌کند:

url = "https://jsonplaceholder.typicode.com/posts"
data = {
    "title": "مثال پایتون",
    "body": "این یک متن آزمایشی است.",
    "userId": 1
}

response = requests.post(url, json=data)

if response.status_code == 201:  # 201: Created
    print("پاسخ سرور:", response.json())
else:
    print("خطا در ارسال داده:", response.status_code)

توضیحات:

  • requests.post(url, json=data): داده‌ها را به عنوان JSON ارسال می‌کند.
  • 201 Created: نشان‌دهنده موفقیت‌آمیز بودن ایجاد یک منبع جدید است.

۵. ارسال درخواست POST با هدر

گاهی نیاز است که داده‌ها را همراه با Headers ارسال کنیم:

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer your_token_here"
}

response = requests.post(url, json=data, headers=headers)

print("پاسخ سرور:", response.json())

توضیحات:

  • Content-Type: application/json: مشخص می‌کند که داده‌ها در قالب JSON هستند.
  • Authorization: اگر سرور نیاز به احراز هویت داشته باشد، باید توکن معتبر ارسال شود.

۶. مدیریت خطاها و استثناها

برای مدیریت خطاهای شبکه و سرور، می‌توان از try-except استفاده کرد:

try:
    response = requests.get("https://jsonplaceholder.typicode.com/posts/invalid-url")
    response.raise_for_status()  # خطاهای HTTP مانند 404 را مدیریت می‌کند
    print(response.json())
except requests.exceptions.HTTPError as errh:
    print("خطای HTTP:", errh)
except requests.exceptions.ConnectionError as errc:
    print("خطای اتصال:", errc)
except requests.exceptions.Timeout as errt:
    print("خطای تایم‌اوت:", errt)
except requests.exceptions.RequestException as err:
    print("خطای عمومی درخواست:", err)

جمع‌بندی:

  • raise_for_status(): خطاهای HTTP را بررسی می‌کند.
  • requests.exceptions.ConnectionError: در صورت عدم اتصال به اینترنت یا سرور.
  • requests.exceptions.Timeout: اگر درخواست بیش از حد طول بکشد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *