شروع کار با Python Requests — درخواست‌های GET

مقدمه

در بسیاری از وب‌اپلیکیشن‌ها، اتصال به سرویس‌های مختلف شخص ثالث (Third-Party Services) از طریق API کاملاً رایج است. با استفاده از این APIها می‌توانید به داده‌هایی مثل:

  • اطلاعات آب‌وهوا

  • نتایج مسابقات ورزشی

  • لیست فیلم‌ها

  • توییت‌ها

  • نتایج موتور جستجو

  • تصاویر

دسترسی پیدا کنید.

همچنین می‌توانید از APIها برای افزودن قابلیت‌هایی مثل:

  • پرداخت‌ها

  • زمان‌بندی

  • ایمیل

  • ترجمه

  • نقشه

  • انتقال فایل

به اپلیکیشن خود استفاده کنید.

اگر بخواهید هرکدام از این‌ها را خودتان از ابتدا بسازید، زمان بسیار زیادی لازم است؛ اما با APIها می‌توانید در عرض چند دقیقه به آن‌ها متصل شوید و از امکاناتشان استفاده کنید.

در این مقاله با کتابخانه Python Requests آشنا می‌شویم که به شما اجازه می‌دهد در پایتون HTTP Request ارسال کنید.

از آنجا که استفاده از API یعنی ارسال درخواست HTTP و دریافت پاسخ، کتابخانه Requests به شما امکان استفاده از APIها را در پایتون می‌دهد.

در این آموزش، برای نمونه از یک API ترجمه زبان استفاده می‌کنیم تا نحوه کار را ببینید.


مرور سریع HTTP Request

درخواست‌های HTTP اساس کار وب هستند.

هر بار که وارد یک صفحه وب می‌شوید، مرورگر شما چندین درخواست به سرور آن سایت ارسال می‌کند. سپس سرور تمام داده‌های لازم برای نمایش صفحه را برمی‌گرداند و مرورگر آن را رندر می‌کند.

فرآیند کلی به این صورت است:

  1. یک Client (مثل مرورگر یا اسکریپت پایتون) داده‌ای به یک URL ارسال می‌کند.

  2. سرور داده را می‌خواند.

  3. تصمیم می‌گیرد چه کاری انجام دهد.

  4. یک پاسخ (Response) برمی‌گرداند.

  5. کلاینت تصمیم می‌گیرد با پاسخ چه کند.


متدهای درخواست (Request Methods)

بخشی از داده‌ای که کلاینت ارسال می‌کند، متد درخواست است.

چند متد رایج:

  • GET → خواندن داده بدون تغییر

  • POST → ایجاد داده

  • PUT → تغییر داده

مثلاً API سرویس Stripe از POST برای ایجاد پرداخت جدید استفاده می‌کند.

توجه: در این مقاله فقط روی درخواست‌های GET تمرکز داریم چون داده‌ای را تغییر نمی‌دهیم.


نصب Python Requests

قبل از شروع باید کتابخانه را نصب کنیم:

pip install requests

بهتر است ابتدا یک virtual environment بسازید.


اولین درخواست ما

بیایید با Requests سایت Scotch.io را درخواست کنیم.

فایل script.py بسازید:

import requests

res = requests.get(‘https://scotch.io’)

print(res)

این کد فقط یک درخواست GET ارسال می‌کند.

تفاوت با مرورگر:

  • مرورگر HTML را رندر می‌کند

  • Requests فقط HTML خام و اطلاعات پاسخ را می‌دهد

می‌توانید اجرا کنید:

python script.py

Status Code ها

اولین چیزی که می‌توان بررسی کرد status code است.

کدهای HTTP از 1XX تا 5XX هستند.

معنی کلی:

  • 1XX → اطلاعات

  • 2XX → موفقیت

  • 3XX → ریدایرکت

  • 4XX → خطای کاربر

  • 5XX → خطای سرور

معمولاً باید دنبال کدهای 200 باشید.

Requests اگر کد 4XX یا 5XX بگیرد، پاسخ را False در نظر می‌گیرد.

مثال:

if res:
print(‘Response OK’)
else:
print(‘Response Failed’)

دیدن مستقیم status code

print(res.status_code)

Headers

می‌توانید headerهای پاسخ را ببینید:

print(res.headers)

Headerها همراه درخواست ارسال و همراه پاسخ برمی‌گردند.

آن‌ها مشخص می‌کنند داده چگونه تفسیر شود.

مهم‌ترینشان معمولاً:

Content-Type

مثلاً:

  • HTML

  • JSON

  • PDF

  • Text


متن پاسخ (Response Text)

اگر بنویسید:

print(res.text)

تمام HTML صفحه را می‌بینید.

این HTML رندر نمی‌شود، فقط متن خام است.


استفاده از API ترجمه

حالا برویم سراغ مثال واقعی‌تر.

از Yandex Translate API استفاده می‌کنیم.

ابتدا ثبت‌نام کنید و API Key بگیرید.

API_KEY = ‘your yandex api key’

API Key برای احراز هویت استفاده می‌شود.


ارسال درخواست به API

url = ‘https://translate.yandex.net/api/v1.5/tr.json/translate’
res = requests.get(url)

اضافه کردن پارامترها

بهتر است پارامترها را دیکشنری بدهیم:

params = dict(key=API_KEY, text=‘Hello’, lang=‘en-es’)

ارسال:

res = requests.get(url, params=params)

Requests خودش پارامترها را به URL اضافه می‌کند.


دیدن پاسخ

print(res.text)

در پاسخ می‌بینید:

  • status code

  • زبان

  • متن ترجمه‌شده

مثلاً:

Hola

اگر بگذارید:

lang=‘en-fr’

پاسخ:

Bonjour


دیدن headerهای این پاسخ

print(res.headers)

این بار Content-Type برابر است با:

application/json

یعنی داده JSON است.


تبدیل پاسخ JSON به دیکشنری

json = res.json()
print(json)

دسترسی به متن ترجمه

print(json[‘text’])

یا مستقیم:

print(json[‘text’][0])

تغییر متن ترجمه

params = dict(key=API_KEY, text=‘Goodbye’, lang=‘en-es’)

پاسخ:

Adios


مدیریت خطاهای API

اگر API key را خراب کنید:

print(res.status_code)

کد:

403

پس باید همیشه موفق بودن درخواست را بررسی کنید.


نتیجه‌گیری

در این مقاله یاد گرفتیم:

  • HTTP request چگونه کار می‌کند

  • انواع status code چیست

  • چگونه با Python Requests درخواست بفرستیم

  • چگونه از API ترجمه استفاده کنیم

  • چگونه پاسخ JSON را به دیکشنری تبدیل کنیم

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *