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





