آیا تا به حال خواستهاید دادههایی از یک وبسایت یا سرویس آنلاین دریافت کنید، اما پیچیدگیهای ارسال درخواستهای HTTP شما را سردرگم کرده است؟ خبر خوب این است که کتابخانه requests
در پایتون همه چیز را ساده و قابلفهم میکند! چه بخواهید اطلاعات را با یک درخواست ساده GET دریافت کنید و چه بخواهید درخواستهای پیچیدهای مثل POST با هدرها، پارامترهای Query و احراز هویت ارسال کنید، requests
به شما این امکان را میدهد که به راحتی همه اینها را انجام دهید. در این مقاله، شما را با تمام ویژگیها و قابلیتهای شگفتانگیز این کتابخانه آشنا خواهیم کرد و به شما نشان میدهیم چطور میتوانید به راحتی و سریعاً با آن کار کنید. پس اگر آمادهاید تا دنیای درخواستهای HTTP را به شیوهای ساده و کاربردی یاد بگیرید، با ما همراه باشید!
مقدمهای بر کتابخانه requests در پایتون
کتابخانه requests
در پایتون، به قدری ساده و قدرتمند است که میتوان گفت برای هر برنامهنویس پایتون یک ابزار ضروری محسوب میشود. این کتابخانه به شما این امکان را میدهد که به راحتی درخواستهای HTTP را ارسال کنید و با سرورها ارتباط برقرار کنید، بدون آنکه نیازی به درگیر شدن با پیچیدگیهای ساختار HTTP یا مدیریت دستی جلسات داشته باشید. شاید شما بخواهید دادههایی از یک وبسایت دریافت کنید یا اطلاعاتی را به یک API ارسال کنید، در اینجا کتابخانه requests
میآید تا با استفاده از تنها چند خط کد، این کار را برای شما انجام دهد.
یکی از ویژگیهای بارز این کتابخانه، سادگی آن است. برخلاف بسیاری از کتابخانههای مشابه که نیاز به تنظیمات پیچیده دارند، requests
به شما اجازه میدهد تا تنها با چند دستور ساده، درخواستهای GET، POST، PUT و DELETE را ارسال کنید. به عبارت دیگر، این کتابخانه تجربهای بیدردسر و کاربرپسند از کار با HTTP را برای شما فراهم میآورد.
اما چیزی که واقعاً باعث میشود requests
در بین برنامهنویسان پایتون محبوب باشد، قابلیتهای پیشرفتهاش است. از ارسال درخواستهای پیچیده با هدرهای سفارشی گرفته تا مدیریت پارامترهای Query String و حتی کار با دادههای JSON، همهچیز در requests
به سادگی انجام میشود. علاوه بر این، امکاناتی مثل مدیریت احراز هویت، بررسی SSL و تایماوتها، باعث میشود این کتابخانه حتی برای پروژههای پیچیده نیز مناسب باشد.
در این بخش، ما به طور دقیقتر به معرفی کتابخانه requests
خواهیم پرداخت و شما را با امکانات آن آشنا خواهیم کرد. اگر میخواهید به دنیای ارسال درخواستها در پایتون قدم بگذارید و پروژههای خود را به شیوهای سریع و آسان پیش ببرید، این مقاله برای شماست!
نصب و راهاندازی کتابخانه requests
برای شروع استفاده از کتابخانه requests
در پروژههای پایتون خود، ابتدا باید آن را نصب کنید. خوشبختانه، نصب این کتابخانه بسیار ساده است و تنها به چند مرحله نیاز دارد. در این بخش، به شما نشان میدهیم که چگونه میتوانید requests
را به راحتی در محیط پایتون خود نصب و راهاندازی کنید.
نصب کتابخانه requests در پایتون
برای نصب کتابخانه requests
، شما تنها به دستور سادهای در ترمینال یا خط فرمان نیاز دارید. به این صورت:
pip install requests
این دستور از طریق pip، مدیر بسته پایتون، کتابخانه requests
را از مخزن پایتون (PyPI) دانلود کرده و آن را به محیط کاری شما اضافه میکند. اگر در حال استفاده از یک محیط مجازی (virtual environment) هستید، مطمئن شوید که آن را فعال کردهاید تا نصب در همان محیط انجام شود.
بررسی نصب
پس از نصب، برای اطمینان از اینکه کتابخانه به درستی نصب شده است، میتوانید به راحتی یک کد ساده در پایتون اجرا کنید تا از کارکرد آن مطمئن شوید. برای مثال:
import requests
response = requests.get('https://www.example.com')
print(response.status_code)
اگر این کد را اجرا کنید و وضعیت کد پاسخ (status code) وبسایت مورد نظر (مثلاً 200) را مشاهده کنید، بدانید که نصب با موفقیت انجام شده است.
مشکلات رایج در نصب
-
خطای "command not found": اگر هنگام اجرای دستور
pip install requests
با خطای "command not found" مواجه شدید، احتمالاً pip در محیط پایتون شما نصب نشده است. برای نصب pip، میتوانید دستور زیر را اجرا کنید:
python -m ensurepip --upgrade
-
خطای دسترسی: اگر با خطای دسترسی مواجه شدید، میتوانید نصب را با دسترسی مدیر سیستم (admin) انجام دهید یا از دستور
--user
برای نصب در سطح کاربر استفاده کنید:
pip install --user requests
با این روشها، شما به راحتی کتابخانه requests
را نصب کرده و آماده استفاده از آن در پروژههای پایتون خود خواهید بود. در بخشهای بعدی، به بررسی نحوه استفاده از این کتابخانه برای ارسال درخواستها و دریافت پاسخها خواهیم پرداخت.
ارسال درخواست GET با کتابخانه requests در پایتون
درخواستهای GET یکی از رایجترین و سادهترین انواع درخواستهای HTTP هستند که برای دریافت دادهها از یک سرور استفاده میشوند. با استفاده از کتابخانه requests
در پایتون، ارسال یک درخواست GET تنها به چند خط کد نیاز دارد. در این بخش، نحوه ارسال درخواستهای GET با requests
و نحوه استفاده از آن برای دریافت اطلاعات از یک وبسایت یا API را بررسی خواهیم کرد.
ارسال یک درخواست GET ساده
فرض کنید میخواهید دادههایی از یک وبسایت مانند example.com
دریافت کنید. برای این کار، کافی است از متد get
کتابخانه requests
استفاده کنید:
import requests
response = requests.get('https://www.example.com')
# نمایش کد وضعیت پاسخ
print(response.status_code)
در این کد، درخواست GET به آدرس https://www.example.com
ارسال میشود و پاسخ آن در متغیر response
ذخیره میشود. سپس، با استفاده از response.status_code
میتوانید کد وضعیت پاسخ را چاپ کنید. کد وضعیت 200 نشاندهنده موفقیتآمیز بودن درخواست است.
دریافت محتوا از پاسخ
بعد از ارسال درخواست GET، میتوانید محتوا (body) پاسخ سرور را که معمولاً شامل HTML، JSON یا دادههای دیگر است، دریافت کنید. برای این کار، از ویژگیهای مختلف شیء response
استفاده میکنیم:
دریافت متن HTML
اگر درخواست شما به یک صفحه وب هدایت میشود، میتوانید محتوای آن را به صورت متن خام (HTML) دریافت کنید:
print(response.text)
این دستور، محتوای HTML صفحه را به صورت یک رشته متنی (string) چاپ میکند.
دریافت دادههای JSON
اگر درخواست شما به یک API ارسال شده باشد که دادهها را به صورت JSON برمیگرداند، میتوانید به راحتی محتوای JSON را با استفاده از متد json()
استخراج کنید:
data = response.json()
print(data)
این دستور، محتوای JSON پاسخ را به صورت یک دیکشنری پایتون (dictionary) تبدیل میکند.
ارسال درخواست GET با پارامترهای URL
گاهی اوقات نیاز دارید که اطلاعات خاصی را به درخواست GET خود اضافه کنید، مانند جستجو در یک سایت یا فیلتر کردن نتایج. برای این کار میتوانید پارامترهای URL را به درخواست خود اضافه کنید. در requests
، این کار به راحتی با استفاده از آرگومان params
انجام میشود:
params = {'q': 'python programming', 'page': 1}
response = requests.get('https://www.example.com/search', params=params)
print(response.text)
در این کد، پارامترهای q
و page
به URL درخواست اضافه میشوند و سرور از آنها برای جستجو و فیلتر کردن نتایج استفاده میکند.
بررسی کد وضعیت پاسخ
یکی از مهمترین بخشهای ارسال درخواستهای GET، بررسی کد وضعیت پاسخ است. کد وضعیت پاسخ به شما اطلاع میدهد که آیا درخواست شما با موفقیت انجام شده است یا خیر. برای مثال:
- 200: درخواست با موفقیت انجام شد.
- 404: صفحه پیدا نشد.
- 500: خطای سرور.
برای بررسی کد وضعیت پاسخ، میتوانید از ویژگی status_code
استفاده کنید:
if response.status_code == 200:
print('درخواست موفق بود!')
else:
print(f'خطا: {response.status_code}')
کتابخانه requests
استفاده از درخواستهای GET را در پایتون بسیار ساده و راحت میکند. شما میتوانید به راحتی دادهها را از وبسایتها یا APIها دریافت کنید، محتوای پاسخ را تحلیل کنید و حتی درخواستهای پیچیدهتری با پارامترهای URL ارسال کنید. در ادامه، به بررسی روشهای پیشرفتهتر و امکانات بیشتر این کتابخانه خواهیم پرداخت تا شما بتوانید از تمام قدرت آن بهرهبرداری کنید.
بررسی پاسخها از سرور
بعد از ارسال یک درخواست HTTP به سرور، مهمترین بخش کار بررسی پاسخ (Response) است که از سرور دریافت میکنید. پاسخ سرور شامل اطلاعات زیادی است که به شما نشان میدهند درخواست شما چطور پردازش شده است و چه دادههایی به شما برگشت داده شدهاند. در این بخش، به بررسی نحوه کار با پاسخها در کتابخانه requests
خواهیم پرداخت و به شما نشان خواهیم داد چگونه از اطلاعات مختلف در پاسخها استفاده کنید.
اجزای پاسخ سرور
پاسخ سرور یک شیء از نوع Response
است که ویژگیهای مختلفی دارد. مهمترین ویژگیهای یک پاسخ عبارتند از:
-
کد وضعیت (Status Code): این کد نشان میدهد که درخواست شما موفقیتآمیز بوده است یا خیر. برای مثال، کد وضعیت
200
نشاندهنده موفقیت است، در حالی که کد404
به معنای پیدا نشدن صفحه است. -
متن پاسخ (Content/Body): محتوای اصلی که سرور به درخواست شما ارسال میکند. این محتوا میتواند شامل HTML، JSON، XML یا هر نوع داده دیگری باشد.
-
هدرها (Headers): اطلاعات اضافی دربارهی درخواست یا پاسخ که میتوانند حاوی اطلاعاتی مثل نوع داده (Content-Type)، طول محتوا (Content-Length) و سایر تنظیمات مربوط به سرور باشند.
دسترسی به ویژگیهای مختلف پاسخ
1. بررسی کد وضعیت پاسخ
کد وضعیت پاسخ یکی از اولین چیزهایی است که باید بررسی کنید. این کد مشخص میکند که آیا درخواست شما به درستی پردازش شده یا با خطا مواجه شده است. برای دسترسی به کد وضعیت، از ویژگی status_code
استفاده میکنیم:
response = requests.get('https://www.example.com')
print(response.status_code)
اگر کد وضعیت 200
باشد، یعنی درخواست شما با موفقیت انجام شده است. اما اگر کد دیگری دریافت کنید (مثل 404
یا 500
)، این بدان معناست که مشکلی در پردازش درخواست وجود داشته است.
2. دسترسی به محتوای پاسخ
محتوای پاسخ میتواند به شکلهای مختلفی باشد. اگر پاسخ سرور شامل HTML است، شما میتوانید از ویژگی text
برای دسترسی به آن استفاده کنید:
print(response.text)
اگر سرور دادهها را به صورت JSON ارسال کرده باشد، شما میتوانید با استفاده از متد json()
دادهها را به یک دیکشنری پایتون تبدیل کنید:
data = response.json()
print(data)
این روش به ویژه برای کار با APIهایی که دادهها را به فرمت JSON ارسال میکنند، بسیار مفید است.
3. دسترسی به هدرهای پاسخ
هدرهای پاسخ حاوی اطلاعات اضافی در مورد پاسخ هستند. برای مثال، میتوانند نوع محتوای برگشتی (مانند application/json
یا text/html
) یا مدت زمان کش (cache) را مشخص کنند. برای دسترسی به هدرها، میتوانید از ویژگی headers
استفاده کنید:
print(response.headers)
این دستور، یک دیکشنری از هدرهای پاسخ را نمایش میدهد. به عنوان مثال، ممکن است هدر Content-Type
را مشاهده کنید که نوع دادههای برگشتی را مشخص میکند.
4. بررسی وضعیت احراز هویت
اگر درخواست شما به یک API نیاز به احراز هویت داشته باشد، پاسخ ممکن است شامل کد وضعیت 401
یا 403
باشد که نشاندهنده مشکلات در احراز هویت یا دسترسی است. در این صورت، شما باید مطمئن شوید که اطلاعات احراز هویت را به درستی ارسال کردهاید.
5. بررسی طول محتوا
گاهی اوقات ممکن است بخواهید بررسی کنید که محتوای پاسخ چقدر طولانی است، به ویژه اگر با فایلهای بزرگ سروکار دارید. برای این کار میتوانید از ویژگی content
برای دریافت محتوای خام و همچنین از ویژگی headers['Content-Length']
برای دسترسی به طول محتوا استفاده کنید:
print(response.headers['Content-Length'])
این مقدار نشاندهنده تعداد بایتهایی است که در پاسخ دریافت کردهاید.
کدهای وضعیت (Status Codes)
کدهای وضعیت (Status Codes) در HTTP پیامهایی هستند که سرور پس از پردازش درخواست شما ارسال میکند. این کدها مشخص میکنند که آیا درخواست شما موفقیتآمیز بوده یا خطایی رخ داده است. کتابخانه requests
به شما این امکان را میدهد که به سادگی این کدها را بررسی کرده و بر اساس آنها اقدامات لازم را انجام دهید.
دستهبندی کدهای وضعیت HTTP
کدهای وضعیت HTTP به پنج دسته کلی تقسیم میشوند:
- ۱xx (اطلاعاتی – Informational): این کدها نشاندهنده این هستند که درخواست دریافت شده و پردازش ادامه دارد.
- ۲xx (موفقیت – Success): این کدها نشان میدهند که درخواست شما با موفقیت پردازش شده است.
- ۳xx (ریدایرکت – Redirection): این کدها به این معنا هستند که درخواست نیاز به انجام یک مرحله دیگر (مثلاً تغییر مسیر) دارد.
- ۴xx (خطای کلاینت – Client Error): این دسته از کدها نشان میدهند که مشکلی در درخواست وجود دارد، مانند درخواست نامعتبر یا عدم دسترسی.
- ۵xx (خطای سرور – Server Error): این کدها نشاندهنده مشکلاتی در سمت سرور هستند که باعث شده درخواست به درستی پردازش نشود.
کدهای وضعیت رایج و معنی آنها
در ادامه، برخی از رایجترین کدهای وضعیت را بررسی میکنیم:
کد وضعیت | توضیح |
---|---|
200 OK | درخواست با موفقیت پردازش شده است. |
201 Created | درخواست موفقیتآمیز بوده و یک منبع جدید ایجاد شده است. |
204 No Content | درخواست انجام شده اما پاسخی ندارد. |
301 Moved Permanently | منبع مورد نظر به یک آدرس جدید منتقل شده است. |
302 Found | منبع موقتاً به یک آدرس جدید منتقل شده است. |
400 Bad Request | درخواست نامعتبر است و سرور قادر به پردازش آن نیست. |
401 Unauthorized | دسترسی نیاز به احراز هویت دارد. |
403 Forbidden | شما مجاز به دسترسی به این منبع نیستید. |
404 Not Found | منبع درخواستی یافت نشد. |
500 Internal Server Error | مشکلی در سرور رخ داده است. |
503 Service Unavailable | سرور در حال حاضر قادر به پاسخگویی نیست (معمولاً به دلیل فشار زیاد یا تعمیرات). |
بررسی کد وضعیت در Requests
در کتابخانه requests
، میتوانید کد وضعیت پاسخ را با استفاده از ویژگی status_code
بررسی کنید:
import requests
response = requests.get('https://www.example.com')
print(response.status_code) # نمایش کد وضعیت
برای مثال، اگر بخواهید بررسی کنید که آیا درخواست موفقیتآمیز بوده یا خیر، میتوانید به این صورت عمل کنید:
if response.status_code == 200:
print("درخواست موفقیتآمیز بود!")
elif response.status_code == 404:
print("صفحه مورد نظر یافت نشد!")
else:
print(f"کد وضعیت دریافتی: {response.status_code}")
بررسی موفقیت درخواست با response.ok
کتابخانه requests
یک ویژگی ساده به نام response.ok
دارد که مقدار True
را در صورت دریافت یک کد وضعیت موفق (۲xx) برمیگرداند:
if response.ok:
print("درخواست با موفقیت انجام شد.")
else:
print("مشکلی در درخواست وجود دارد.")
دسترسی به محتوای پاسخ در کتابخانه Requests پایتون
پس از ارسال یک درخواست HTTP با requests
، سرور یک پاسخ ارسال میکند که شامل اطلاعات مختلفی مانند کد وضعیت، هدرها و محتوای پاسخ است. در بسیاری از موارد، مهمترین بخش پاسخ، بدنه (Body) آن است که میتواند شامل متن، JSON، یا حتی فایلهای باینری مانند تصویر و ویدیو باشد. کتابخانه requests
چندین روش برای دسترسی به محتوای پاسخ ارائه میدهد که در ادامه بررسی خواهیم کرد.
دریافت محتوای پاسخ بهصورت متن (Text)
سادهترین و رایجترین روش برای دریافت محتوای پاسخ، استفاده از ویژگی .text
است که محتوای پاسخ را بهصورت رشتهی متنی (String) برمیگرداند:
import requests
response = requests.get("https://www.example.com")
print(response.text) # نمایش محتوای متنی پاسخ
این روش برای دریافت صفحات HTML، متون ساده و دادههایی که بهصورت text/plain
یا text/html
ارسال میشوند، مناسب است.
دریافت محتوای پاسخ بهصورت JSON
در بسیاری از APIها، دادههای پاسخ بهصورت JSON ارسال میشوند. برای تبدیل خودکار پاسخ به یک شیء دیکشنری در پایتون، میتوان از متد .json()
استفاده کرد:
response = requests.get("https://jsonplaceholder.typicode.com/todos/1")
data = response.json() # تبدیل پاسخ به دیکشنری پایتون
print(data)
print(data["title"]) # دسترسی به مقدار یک کلید مشخص
⚠️ نکته: اگر پاسخ سرور یک JSON معتبر نباشد، این متد یک خطای
JSONDecodeError
ایجاد خواهد کرد. بنابراین، بهتر است قبل از استفاده، بررسی کنیم که محتوا JSON است:
if "application/json" in response.headers.get("Content-Type", ""):
data = response.json()
print("JSON Response:", data)
else:
print("پاسخ دریافتی JSON نیست!")
دریافت محتوای پاسخ بهصورت باینری
در برخی موارد، دادههای دریافتی از سرور ممکن است تصاویر، فایلهای صوتی، یا دادههای رمزگذاریشده باشند. در چنین شرایطی میتوان از ویژگی .content
برای دریافت دادههای پاسخ بهصورت بایت (bytes) استفاده کرد:
response = requests.get("https://www.example.com/image.jpg")
with open("image.jpg", "wb") as file:
file.write(response.content) # ذخیره دادههای باینری در یک فایل
کاربرد این روش: دریافت و ذخیره فایلهای تصویری، ویدیویی، صوتی و اسناد PDF.
بررسی نوع محتوای پاسخ (Content-Type)
گاهی لازم است قبل از پردازش پاسخ، نوع محتوا را بررسی کنیم. این اطلاعات در هدر Content-Type
موجود است:
content_type = response.headers.get("Content-Type")
print(f"نوع محتوای پاسخ: {content_type}")
برخی از انواع محتوای رایج:
text/html
→ محتوای HTMLapplication/json
→ محتوای JSONimage/jpeg
→ تصویر JPEGapplication/pdf
→ فایل PDF
کتابخانه requests
در پایتون روشهای متنوعی برای دسترسی به محتوای پاسخ ارائه میدهد که بسته به نوع دادهی دریافتی، میتوان از .text
برای محتوای متنی، .json()
برای دادههای JSON و .content
برای دادههای باینری استفاده کرد. انتخاب روش مناسب به ساختار و نوع پاسخ سرور بستگی دارد و بررسی Content-Type
به شما کمک میکند تا به درستی با دادهها کار کنید.
استفاده از پارامترهای Query String با کتابخانه Requests در پایتون
در بسیاری از APIها و سرویسهای وب، اطلاعاتی که به سرور ارسال میشوند، بهجای قرار گرفتن در بدنهی درخواست (Body)، در آدرس (URL) بهصورت Query String قرار میگیرند. این نوع ارسال داده معمولاً در درخواستهای GET برای فیلتر کردن نتایج، ارسال کلیدهای API، یا تنظیم پارامترهای جستجو استفاده میشود.
نحوه ارسال پارامترهای Query String در Requests
برای اضافه کردن پارامترهای Query String به درخواستهای GET
، میتوان از آرگومان params
در تابع requests.get()
استفاده کرد. این آرگومان یک دیکشنری دریافت میکند که بهطور خودکار به آدرس URL اضافه میشود:
import requests
url = "https://jsonplaceholder.typicode.com/posts"
params = {
"userId": 1, # فیلتر کردن پستها برای کاربر مشخصی
"id": 5 # دریافت پست خاصی
}
response = requests.get(url, params=params)
print(response.url) # مشاهده آدرس نهایی درخواست
print(response.json()) # نمایش دادههای دریافتی
- پارامترهای
userId
وid
بهصورت Query String به آدرسURL
اضافه شدهاند. - کتابخانه
requests
بهطور خودکارparams
را به فرمت مناسب (?userId=1&id=5
) تبدیل میکند. - مقدار
response.url
نشان میدهد که درخواست نهایی به چه شکلی ارسال شده است.
ارسال پارامترهای پیچیدهتر
در برخی موارد، پارامترهای Query String میتوانند لیستی از مقادیر باشند. در این حالت، میتوان یک لیست پایتونی را در params
قرار داد و requests
بهطور خودکار آن را به شکل صحیح تبدیل میکند:
params = {
"category": ["python", "django"], # ارسال چند مقدار برای یک پارامتر
"sort": "date"
}
response = requests.get("https://example.com/articles", params=params)
print(response.url) # خروجی: https://example.com/articles?category=python&category=django&sort=date
🔹 در این مثال، مقدار category
شامل دو مقدار است و requests
آن را بهصورت چندین پارامتر مجزا ارسال میکند.
کاربردهای رایج Query String
پارامترهای Query String در بسیاری از APIهای عمومی و سرویسهای وب مورد استفاده قرار میگیرند. برخی از کاربردهای رایج:
✅ جستجو در دادهها
params = {"q": "python"}
requests.get("https://example.com/search", params=params)
✅ فیلتر کردن نتایج
params = {"status": "active", "limit": 10}
requests.get("https://api.example.com/users", params=params)
✅ دسترسی به صفحههای بعدی در APIهای صفحهبندیشده (Pagination)
params = {"page": 2, "per_page": 20}
requests.get("https://api.example.com/items", params=params)
استفاده از هدرها (Headers) در درخواستها با استفاده از کتابخانه requests در پایتون
هدرهای HTTP اطلاعات مهمی را بین کلاینت و سرور رد و بدل میکنند. این اطلاعات شامل مواردی مانند نوع محتوا (Content-Type)، احراز هویت (Authentication)، مشخصات کاربر (User-Agent)، و کشینگ (Caching) هستند. در کتابخانه requests
، میتوان هدرها را بهراحتی در درخواستهای HTTP ارسال کرد و تغییر داد.
نحوه ارسال هدرها در درخواستها
در کتابخانه requests
، هدرهای HTTP با استفاده از آرگومان headers
ارسال میشوند که یک دیکشنری از کلید و مقدارهای هدر است.
مثال: ارسال یک هدر ساده
import requests
url = "https://httpbin.org/get"
headers = {
"User-Agent": "MyCustomUserAgent/1.0",
"Accept": "application/json"
}
response = requests.get(url, headers=headers)
print(response.json()) # مشاهده پاسخ سرور
🔹 در این مثال:
User-Agent
مشخص میکند که این درخواست از طرف چه نوع کلاینتی ارسال شده است.Accept
به سرور میگوید که پاسخ باید در قالب JSON باشد.
ارسال توکن احراز هویت در هدر
برخی APIها برای تأیید هویت کاربران نیاز به توکنهای احراز هویت دارند که معمولاً در هدر Authorization
قرار میگیرند.
مثال: ارسال توکن در هدر
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
}
response = requests.get("https://api.example.com/protected-data", headers=headers)
print(response.status_code)
🔹 مقدار Authorization
حاوی توکن JWT یا OAuth است که سرور از آن برای تأیید دسترسی استفاده میکند.
ارسال داده در قالب خاص با استفاده از هدر Content-Type
هنگام ارسال داده در درخواستهای POST، PUT یا PATCH، معمولاً نیاز است که فرمت داده را در هدر Content-Type مشخص کنیم.
مثال: ارسال درخواست POST
با دادههای JSON
import json
url = "https://httpbin.org/post"
headers = {
"Content-Type": "application/json"
}
data = {
"name": "Ali",
"email": "ali@example.com"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json()) # مشاهده پاسخ سرور
🔹 در این مثال:
- هدر
Content-Type: application/json
به سرور میگوید که دادهها در قالب JSON ارسال شدهاند. - تابع
json.dumps(data)
دادههای پایتونی را به فرمت JSON تبدیل میکند.
دریافت و بررسی هدرهای پاسخ از سرور
علاوه بر ارسال هدرها، میتوان هدرهای دریافتی از سرور را نیز بررسی کرد.
مثال: دریافت و مشاهده هدرهای پاسخ
response = requests.get("https://httpbin.org/get")
print(response.headers) # نمایش تمام هدرهای دریافتی
print(response.headers.get("Content-Type")) # دریافت مقدار هدر خاص
🔹 خروجی نمونه ممکن است چیزی شبیه به این باشد:
{
'Date': 'Sat, 23 Feb 2025 12:00:00 GMT',
'Content-Type': 'application/json',
'Server': 'gunicorn/19.9.0',
'Content-Length': '200'
}
کاربردهای رایج هدرها در درخواستها
✅ احراز هویت و ارسال توکن
headers = {"Authorization": "Bearer YOUR_TOKEN"}
requests.get("https://api.example.com/data", headers=headers)
✅ مشخص کردن نوع محتوا
headers = {"Content-Type": "application/json"}
requests.post("https://api.example.com/post", headers=headers, json={"key": "value"})
✅ تنظیم مشخصات User-Agent برای جلوگیری از بلاک شدن
headers = {"User-Agent": "Mozilla/5.0"}
requests.get("https://example.com", headers=headers)
✅ غیرفعال کردن کشینگ سرور برای دریافت جدیدترین دادهها
headers = {"Cache-Control": "no-cache"}
requests.get("https://example.com/data", headers=headers)
پیشنهاد مطالعه: راهنمای کامل کاربرد برنامه نویسی پایتون | از بازی سازی تا توسعه وب
پیشنهاد مطالعه: معرفی 10 پروژه مبتدی پایتون برای افزایش مهارت و شانس استخدام
پیشنهاد مطالعه: معرفی 13 مورد از کاملترین کتاب های آموزش پایتون در سطح مبتدی
پیشنهاد مطالعه: بهترین سایت های آموزش آنلاین پایتون در سال 2025 + نحوه یادگیری موثر
سخن پایانی
کتابخانه requests
در پایتون یکی از قدرتمندترین ابزارهای پایتون برای ارتباط با وب و ارسال درخواستهای HTTP است. از دریافت سادهی دادهها گرفته تا ارسال اطلاعات پیچیده همراه با هدرها، احراز هویت، و مدیریت نشستها، این کتابخانه همه چیز را در اختیار شما قرار میدهد. اگر تا به حال با APIها کار نکردهاید، requests
بهترین نقطهی شروع است.
یادگیری این کتابخانه نه تنها مهارت شما را در کار با وب سرویسها و APIها افزایش میدهد، بلکه شما را به یک توسعهدهندهی حرفهایتر تبدیل میکند. پیشنهاد میکنم که حتماً با نمونهکدهای مختلف آزمایش کنید، سناریوهای مختلف را بررسی کنید، و چالشهای واقعی را با requests
حل کنید. دنیای وب پر از دادهها و اطلاعات است، و حالا شما ابزار لازم برای تعامل با آن را در اختیار دارید. 🚀
برای درج نظر می بایست وارد حساب کاربری خود شوید