در این راهنما، نحوه استفاده از کتابخانه 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: اگر درخواست بیش از حد طول بکشد.
