کتابخانه Requests در پایتون برای تعامل با APIها و دریافت منابع از اینترنت به کار میرود. یکی از جنبههای مهم کار با Requests، مدیریت کدهای وضعیت HTTP است که اطلاعات مهمی در مورد موفقیت یا عدم موفقیت یک درخواست فراهم میکند. در این مقاله، به بررسی کدهای وضعیت HTTP و نحوه مدیریت خطاها در Requests خواهیم پرداخت.
سرفصل های مقاله
۱. کدهای وضعیت HTTP
کدهای وضعیت HTTP دستهبندیهایی دارند که میتوانند به ما بگویند آیا درخواست ما موفق بوده یا خیر. به طور کلی، این کدها به 5 دسته تقسیم میشوند:
- 2xx: موفقیتآمیز بودن درخواست
- 200 OK: درخواست به درستی انجام شد.
- 201 Created: منبع جدیدی ایجاد شد.
- 204 No Content: درخواست موفق بوده اما هیچ محتوایی برنمیگرداند.
- 4xx: خطاهای کلاینت
- 400 Bad Request: درخواست نادرست است.
- 401 Unauthorized: نیاز به احراز هویت برای دسترسی.
- 404 Not Found: منبع خواسته شده پیدا نشد.
- 5xx: خطاهای سرور
- 500 Internal Server Error: خطای داخلی سرور.
- 503 Service Unavailable: سرور در حال حاضر در دسترس نیست.
۲. مدیریت خطاها با Requests
برای مدیریت خطاها در هنگام استفاده از Requests، میتوان از متد raise_for_status() استفاده کرد که در صورتی که پاسخ حاوی کد وضعیت خطا باشد، یک استثنا به وجود میآورد. در زیر یک مثال از مدیریت خطاها آورده شده است:
import requests
url = 'https://api.example.com/data'
try:
response = requests.get(url)
response.raise_for_status() # بررسی کد وضعیت
data = response.json() # پردازش دادهها
print(data)
except requests.exceptions.HTTPError as http_err:
print(f'خطای HTTP: {http_err}') # خطای HTTP
except requests.exceptions.RequestException as err:
print(f'خطای درخواست: {err}') # سایر خطاهای مربوط به درخواست
۳. تجزیه و تحلیل کدهای وضعیت
برای به دست آوردن کد وضعیت HTTP در پاسخ، میتوانیم از response.status_code استفاده کنیم. در اینجا مثالی برای تجزیه و تحلیل کد وضعیت آورده شده است:
response = requests.get(url)
if response.status_code == 200:
print('درخواست موفق بود!')
elif response.status_code == 404:
print('منبع پیدا نشد.')
elif response.status_code == 500:
print('خطای داخلی سرور.')
else:
print(f'خطای غیر منتظره: {response.status_code}')
آموزش کتابخانه ریکوئست (رایگان)
۴. ثبت خطاها و پیغامها
در مثالی دیگر، میتوانیم اطلاعات بیشتری از خطاها و وضعیتها را ثبت کنیم:
import logging
logging.basicConfig(level=logging.ERROR)
try:
response = requests.get(url)
response.raise_for_status()
data = response.json()
print(data)
except requests.exceptions.HTTPError as http_err:
logging.error(f'خطای HTTP: {http_err} - کد وضعیت: {http_err.response.status_code}')
except Exception as e:
logging.error(f'خطای غیر منتظره: {e}')
۵. نتیجه گیری
مدیریت کدهای وضعیت HTTP و خطاها در هنگام استفاده از کتابخانه Requests بسیار حیاتی است. با استفاده از raise_for_status() و تجزیه و تحلیل response.status_code، میتوانید برای بهبود کارایی و قابلیت اطمینان برنامههای خود اطمینان حاصل کنید. همچنین، با ثبت خطاها میتوانید به سادگی مشکلات پیش آمده را شناسایی و برطرف کنید.
این اصول به شما کمک میکند تا با APIها به روشی مؤثرتر و قابل اتکا کار کنید.