آموزش Requests در پایتون

کتابخانه Requests یکی از محبوب‌ترین کتابخانه‌های پایتون برای ارسال درخواست‌های HTTP و ارتباط با وب‌سایت‌ها و APIها است.

در این آموزش یاد می‌گیریم چگونه با Requests درخواست‌های GET و POST ارسال کنیم، اطلاعات JSON دریافت کنیم، پارامتر و Header بفرستیم و خطاهای درخواست را مدیریت کنیم.

این آموزش به زبان ساده و پروژه‌محور نوشته شده و برای افرادی مناسب است که مباحث پایه پایتون را یاد گرفته‌اند و می‌خواهند وارد دنیای API و برنامه‌های واقعی شوند.

Requests چیست؟

Requests یک کتابخانه پایتون است که ارسال درخواست‌های HTTP را بسیار ساده می‌کند.

برای مثال اگر بخواهیم اطلاعات یک API را دریافت کنیم، به جای کار با جزئیات پیچیده HTTP می‌توانیم از Requests استفاده کنیم.

این کتابخانه در پروژه‌های مختلفی مانند کار با APIها، دریافت اطلاعات از سرویس‌های اینترنتی و بعضی پروژه‌های Web Scraping کاربرد دارد.

نصب Requests در پایتون

برای نصب Requests می‌توانیم از ابزار pip استفاده کنیم:

pip install requests

بعد از نصب موفق، می‌توانیم کتابخانه را در برنامه خود وارد کنیم.

وارد کردن Requests

برای استفاده از کتابخانه، ابتدا آن را import می‌کنیم:

import requests

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

متد GET معمولاً برای دریافت اطلاعات از یک سرور استفاده می‌شود.

برای ارسال یک درخواست GET می‌توانیم از requests.get() استفاده کنیم:

import requests

response = requests.get("https://example.com")

print(response)

متغیر response پاسخ دریافت‌شده از سرور را نگهداری می‌کند.

بررسی Status Code

هر پاسخ HTTP دارای یک کد وضعیت یا Status Code است.

برای مشاهده آن می‌توانیم از status_code استفاده کنیم:

import requests

response = requests.get("https://example.com")

print(response.status_code)

برای مثال کد 200 معمولاً نشان‌دهنده موفق بودن درخواست است.

کدهای 2xx معمولاً نشان‌دهنده موفقیت هستند، کدهای 4xx معمولاً به خطای سمت درخواست‌کننده و کدهای 5xx به خطای سمت سرور مربوط می‌شوند.

دریافت متن پاسخ با response.text

اگر بخواهیم متن پاسخ را دریافت کنیم، می‌توانیم از response.text استفاده کنیم:

import requests

response = requests.get("https://example.com")

print(response.text)

این روش برای مشاهده محتوای متنی پاسخ بسیار کاربردی است.

دریافت JSON با Requests

بسیاری از APIها اطلاعات را به صورت JSON ارسال می‌کنند. Requests امکان تبدیل پاسخ JSON به ساختارهای پایتون را فراهم می‌کند.

import requests

response = requests.get("https://api.example.com/data")

data = response.json()

print(data)

اگر JSON شامل یک دیکشنری باشد، می‌توانیم مانند یک دیکشنری معمولی به داده‌های آن دسترسی داشته باشیم.

print(data["name"])

ارسال پارامتر با GET

گاهی API برای جستجو یا فیلتر کردن اطلاعات به پارامتر نیاز دارد. این پارامترها را می‌توانیم با params ارسال کنیم.

import requests

params = {
    "q": "python",
    "page": 1
}

response = requests.get(
    "https://example.com/search",
    params=params
)

print(response.url)

Requests پارامترها را به شکل Query String به URL اضافه می‌کند.

ارسال Headers

بعضی APIها برای پردازش درخواست به Headerهای خاص نیاز دارند.

import requests

headers = {
    "Accept": "application/json"
}

response = requests.get(
    "https://example.com/api",
    headers=headers
)

print(response.status_code)

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

از POST معمولاً برای ارسال اطلاعات به سرور استفاده می‌شود.

برای مثال می‌توانیم یک دیکشنری را به عنوان JSON ارسال کنیم:

import requests

data = {
    "name": "Ali",
    "age": 25
}

response = requests.post(
    "https://example.com/api/users",
    json=data
)

print(response.status_code)
آدرس‌های example.com در مثال‌های این صفحه صرفاً برای آموزش هستند. برای ارسال درخواست واقعی باید از API معتبر استفاده کنید.

مدیریت خطاها در Requests

در برنامه‌های واقعی بهتر است خطاهای احتمالی درخواست را مدیریت کنیم.

یکی از روش‌های ساده استفاده از try و except است:

import requests

try:
    response = requests.get(
        "https://example.com",
        timeout=10
    )

    response.raise_for_status()

    print(response.text)

except requests.exceptions.RequestException as error:
    print("خطا در ارسال درخواست:")
    print(error)

استفاده از timeout نیز باعث می‌شود برنامه برای مدت نامحدود منتظر پاسخ سرور نماند.

مثال کاربردی با Requests

فرض کنیم یک API اطلاعات کاربران را در اختیار ما قرار می‌دهد. می‌توانیم پاسخ را دریافت کرده و اطلاعات را چاپ کنیم:

import requests

url = "https://example.com/api/users"

try:
    response = requests.get(url, timeout=10)

    response.raise_for_status()

    users = response.json()

    for user in users:
        print(user)

except requests.exceptions.RequestException as error:
    print("خطا:", error)

این ساختار پایه بسیاری از برنامه‌هایی است که با APIها ارتباط برقرار می‌کنند.

تمرین Requests در پایتون

تمرین ۱

برنامه‌ای بنویسید که با Requests یک درخواست GET ارسال کند و Status Code پاسخ را نمایش دهد.

پاسخ

import requests

response = requests.get("https://example.com")

print(response.status_code)

تمرین ۲

برنامه‌ای بنویسید که درخواست GET را ارسال کرده و متن پاسخ را چاپ کند.

پاسخ

import requests

response = requests.get("https://example.com")

print(response.text)

تمرین ۳

برنامه‌ای بنویسید که درخواست را با timeout ارسال کند و خطاهای احتمالی را مدیریت کند.

پاسخ

import requests

try:
    response = requests.get(
        "https://example.com",
        timeout=10
    )

    response.raise_for_status()

    print(response.text)

except requests.exceptions.RequestException as error:
    print("خطا:", error)

سؤالات متداول درباره Requests

Requests در پایتون چیست؟

Requests یک کتابخانه محبوب پایتون برای ارسال درخواست‌های HTTP و ارتباط با سرویس‌های وب و APIها است.

چگونه Requests را نصب کنیم؟

با دستور زیر می‌توانیم آن را با pip نصب کنیم:

pip install requests

تفاوت GET و POST چیست؟

GET معمولاً برای دریافت اطلاعات و POST معمولاً برای ارسال اطلاعات به سرور استفاده می‌شود.

response.json() چه کاری انجام می‌دهد؟

این متد داده JSON موجود در پاسخ را به ساختارهای قابل استفاده در پایتون تبدیل می‌کند.

Status Code 200 به چه معناست؟

کد 200 معمولاً به معنی موفق بودن درخواست HTTP است.