ویژگی تصویر

کتابخانه requests در پایتون

  /  پایتون   /  کتابخانه requests در پایتون
بنر تبلیغاتی الف

کتابخانه requests یکی از محبوب‌ترین و پرکاربردترین کتابخانه‌ها برای ارسال درخواست‌های HTTP در زبان پایتون است. این کتابخانه کار با پروتکل HTTP را ساده و روان می‌کند و به برنامه‌نویسان اجازه می‌دهد بدون پیچیدگی‌های اضافی، به وب‌سرویس‌ها متصل شوند و داده دریافت یا ارسال کنند.

ویژگی‌های کلیدی کتابخانه requests

  • ارسال درخواست‌های GET و POST به سادگی.
  • مدیریت کوکی‌ها و سشن‌ها به صورت خودکار.
  • پشتیبانی از هدرهای HTTP و پارامترهای URL.
  • امکان ارسال داده‌های JSON و فرم‌ها.
  • پشتیبانی از timeout و مدیریت خطاها.

نصب کتابخانه

برای استفاده از requests ابتدا باید آن را نصب کنید:

pip install requests

این دستور کتابخانه را از PyPI دانلود و نصب می‌کند.

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

یکی از پرکاربردترین روش‌ها برای دریافت داده از سرور، استفاده از درخواست GET است.

import requests

url = "[https://jsonplaceholder.typicode.com/users](https://jsonplaceholder.typicode.com/users)"
response = requests.get(url)

if response.status_code == 200:
data = response.json()
for user in data:
print(f"Name: {user['name']}, Email: {user['email']}")
else:
print("خطا در دریافت داده‌ها")

در این مثال:

  • ابتدا URL API مشخص شده است.
  • با استفاده از requests.get درخواست ارسال می‌شود.
  • وضعیت پاسخ با status_code بررسی شده است.
  • در صورت موفقیت، داده‌ها با response.json() به صورت دیکشنری پایتون خوانده می‌شوند.

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

برای ارسال داده به سرور، معمولاً از درخواست POST استفاده می‌کنیم:

import requests

url = "[https://jsonplaceholder.typicode.com/posts](https://jsonplaceholder.typicode.com/posts)"
payload = {
"title": "Hello World",
"body": "This is a test post",
"userId": 1
}

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

if response.status_code == 201:
print("داده با موفقیت ارسال شد")
print(response.json())
else:
print("ارسال داده ناموفق بود")

توضیح:

  • دیکشنری payload داده‌هایی است که می‌خواهیم ارسال کنیم.
  • با مشخص کردن json=payload، کتابخانه به صورت خودکار هدر Content-Type: application/json را اضافه می‌کند.
  • کد وضعیت 201 به معنای ایجاد موفقیت‌آمیز داده در سرور است.

مدیریت هدرها

در برخی موارد نیاز است هدرهای HTTP دلخواه اضافه کنیم:

headers = {
    "User-Agent": "MyApp/1.0",
    "Authorization": "Bearer your_token_here"
}

response = requests.get("[https://api.example.com/data](https://api.example.com/data)", headers=headers)
print(response.status_code)

اینجا هدر User-Agent برای شناسایی برنامه و هدر Authorization برای احراز هویت اضافه شده است.

مدیریت کوکی‌ها و سشن‌ها

کتابخانه requests امکان حفظ وضعیت بین چند درخواست را با Session فراهم می‌کند:

import requests

session = requests.Session()
session.get("[https://httpbin.org/cookies/set/sessioncookie/123456789](https://httpbin.org/cookies/set/sessioncookie/123456789)")

response = session.get("[https://httpbin.org/cookies](https://httpbin.org/cookies)")
print(response.text)

در این مثال، کوکی تنظیم شده در اولین درخواست، در درخواست بعدی به طور خودکار ارسال می‌شود.

ارسال داده‌های فرم

برای ارسال فرم‌ها از نوع application/x-www-form-urlencoded:

payload = {
    "username": "admin",
    "password": "12345"
}

response = requests.post("[https://example.com/login](https://example.com/login)", data=payload)
print(response.text)

تفاوت با json= این است که داده‌ها به صورت فرم URL-encoded ارسال می‌شوند و نه JSON.

مدیریت تایم‌اوت و خطاها

برای جلوگیری از انتظار بی‌نهایت در پاسخ سرور، از timeout استفاده می‌کنیم:

try:
    response = requests.get("https://example.com", timeout=5)
    response.raise_for_status()
except requests.Timeout:
    print("درخواست بیش از حد طول کشید")
except requests.HTTPError as err:
    print(f"خطای HTTP: {err}")
except requests.RequestException as err:
    print(f"خطای دیگر: {err}")

توضیح:

  • timeout=5 باعث می‌شود پس از ۵ ثانیه اگر پاسخی نیامد، درخواست متوقف شود.
  • raise_for_status() خطاهای HTTP را بررسی و در صورت وجود Exception ایجاد می‌کند.

بهترین شیوه‌ها هنگام استفاده از requests

  • همیشه وضعیت پاسخ (status_code) را بررسی کنید.
  • برای امنیت، داده‌های حساس را با استفاده از HTTPS ارسال کنید.
  • در ارسال داده‌های حجیم، از stream=True برای مدیریت حافظه استفاده کنید.
  • استفاده از Session برای مدیریت کوکی‌ها و افزایش کارایی توصیه می‌شود.
  • در درخواست‌های متعدد و طولانی، از مدیریت استثناها برای جلوگیری از توقف برنامه استفاده کنید.

جدول مقایسه متدهای رایج

متدکاربردمثال کد
GETدریافت داده از سرورrequests.get(url)
POSTارسال داده به سرورrequests.post(url, json=payload)
PUTبه‌روزرسانی داده موجودrequests.put(url, json=payload)
DELETEحذف دادهrequests.delete(url)

100 نمونه سؤال و پروژه برای کتابخانه requests در پایتون

داخل انجمن وب سایت بابلز لرن بیش از 100 نمونه سؤال و پروژه برای کتابخانه requests منتشر کرده ایم که برای درک بهتر و یادگیری بیشتر خیلی به شما کمک خواهد کرد.

نتیجه‌گیری

کتابخانه requests ابزار بسیار ساده و قدرتمندی برای کار با HTTP در پایتون است. با رعایت بهترین شیوه‌ها و مدیریت صحیح خطاها و تایم‌اوت‌ها، می‌توان برنامه‌های پایتون بسیار پایدار و امن برای ارتباط با وب‌سرویس‌ها و APIها ایجاد کرد. این کتابخانه با قابلیت‌هایی مانند مدیریت سشن، هدرهای سفارشی، کوکی‌ها و داده‌های JSON، نیازهای اکثر برنامه‌نویسان را پوشش می‌دهد.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: