ESC را فشار دهید تا بسته شود

آشنایی با کتابخانه Requests در پایتون به زبان ساده {مثال + کد}

آیا تا به حال خواسته‌اید داده‌هایی از یک وب‌سایت یا سرویس آنلاین دریافت کنید، اما پیچیدگی‌های ارسال درخواست‌های 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) را مشاهده کنید، بدانید که نصب با موفقیت انجام شده است.

مشکلات رایج در نصب

  1. خطای "command not found": اگر هنگام اجرای دستور pip install requests با خطای "command not found" مواجه شدید، احتمالاً pip در محیط پایتون شما نصب نشده است. برای نصب pip، می‌توانید دستور زیر را اجرا کنید:

python -m ensurepip --upgrade
  1. خطای دسترسی: اگر با خطای دسترسی مواجه شدید، می‌توانید نصب را با دسترسی مدیر سیستم (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 است که ویژگی‌های مختلفی دارد. مهم‌ترین ویژگی‌های یک پاسخ عبارتند از:

  1. کد وضعیت (Status Code): این کد نشان می‌دهد که درخواست شما موفقیت‌آمیز بوده است یا خیر. برای مثال، کد وضعیت 200 نشان‌دهنده موفقیت است، در حالی که کد 404 به معنای پیدا نشدن صفحه است.

  2. متن پاسخ (Content/Body): محتوای اصلی که سرور به درخواست شما ارسال می‌کند. این محتوا می‌تواند شامل HTML، JSON، XML یا هر نوع داده دیگری باشد.

  3. هدرها (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 → محتوای HTML
  • application/json → محتوای JSON
  • image/jpeg → تصویر JPEG
  • application/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 حل کنید. دنیای وب پر از داده‌ها و اطلاعات است، و حالا شما ابزار لازم برای تعامل با آن را در اختیار دارید. 🚀

نظرات (0)

wave

هیج نظری ثبت نشده است

ارسال نظر

wave

برای درج نظر می بایست وارد حساب کاربری خود شوید