آموزش API در پایتون

API یکی از مهم‌ترین مفاهیم در دنیای برنامه‌نویسی و توسعه نرم‌افزار است. با استفاده از API می‌توانیم برنامه‌های مختلف را به یکدیگر متصل کنیم و اطلاعات را بین آن‌ها جابه‌جا کنیم.

در این آموزش با مفهوم API، REST API، Endpoint، JSON، درخواست‌های GET و POST، پارامترها، Headers و API Key آشنا می‌شویم و در نهایت یک مثال کاربردی با پایتون اجرا می‌کنیم.

اگر هنوز با کتابخانه Requests آشنا نیستید، پیشنهاد می‌کنیم ابتدا آموزش Requests در پایتون را مطالعه کنید.

API چیست؟

API مخفف Application Programming Interface است.

API مجموعه‌ای از قوانین و روش‌هاست که به برنامه‌های مختلف اجازه می‌دهد با یکدیگر ارتباط برقرار کنند.

برای مثال تصور کنید یک اپلیکیشن هواشناسی می‌خواهد دمای یک شهر را نمایش دهد. این برنامه می‌تواند اطلاعات آب‌وهوا را از یک سرویس API دریافت کند.

به زبان ساده: API مانند یک واسطه بین دو برنامه عمل می‌کند.

چرا API مهم است؟

امروزه بسیاری از برنامه‌ها و سرویس‌های اینترنتی از API استفاده می‌کنند.

  • ارتباط بین اپلیکیشن و سرور
  • دریافت اطلاعات از سرویس‌های آنلاین
  • ارسال اطلاعات به سرور
  • اتصال برنامه‌ها به یکدیگر
  • ساخت اپلیکیشن‌های موبایل و وب
  • کار با سرویس‌های هوش مصنوعی

برای مثال بسیاری از سرویس‌های AI نیز API در اختیار برنامه‌نویسان قرار می‌دهند.

REST API چیست؟

REST یکی از معماری‌های رایج برای طراحی APIهای وب است.

در REST معمولاً از متدهای HTTP برای انجام عملیات مختلف استفاده می‌شود.

  • GET برای دریافت اطلاعات
  • POST برای ایجاد یا ارسال اطلاعات
  • PUT برای به‌روزرسانی اطلاعات
  • PATCH برای به‌روزرسانی بخشی از اطلاعات
  • DELETE برای حذف اطلاعات

Endpoint چیست؟

Endpoint آدرسی است که برای دسترسی به یک بخش مشخص از API استفاده می‌شود.

برای مثال:

https://api.example.com/users

در این مثال مسیر /users می‌تواند Endpoint مربوط به کاربران باشد.

Request و Response چیست؟

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

سرور پس از پردازش درخواست، یک Response برمی‌گرداند.

Client
   |
   | Request
   ↓
API Server
   |
   | Response
   ↓
Client

JSON چیست؟

بسیاری از APIها اطلاعات را با فرمت JSON ارسال می‌کنند.

برای مثال:

{
    "name": "Ali",
    "age": 25,
    "city": "Tehran"
}

JSON ساختاری شبیه دیکشنری پایتون دارد و برای انتقال اطلاعات بین برنامه‌ها بسیار رایج است.

GET در API

از GET معمولاً برای دریافت اطلاعات استفاده می‌شود.

با کتابخانه Requests می‌توانیم چنین درخواستی ارسال کنیم:

import requests

response = requests.get(
    "https://api.example.com/users"
)

print(response.status_code)

برای آشنایی کامل‌تر با Requests می‌توانید آموزش Requests در پایتون را مطالعه کنید.

POST در API

POST معمولاً برای ارسال اطلاعات به API استفاده می‌شود.

import requests

data = {
    "name": "Ali",
    "age": 25
}

response = requests.post(
    "https://api.example.com/users",
    json=data
)

print(response.status_code)

Query Parameters

گاهی API برای جستجو یا فیلتر اطلاعات به پارامتر نیاز دارد.

برای مثال:

https://api.example.com/users?city=Tehran

در Requests می‌توانیم پارامترها را به شکل زیر ارسال کنیم:

import requests

params = {
    "city": "Tehran"
}

response = requests.get(
    "https://api.example.com/users",
    params=params
)

print(response.url)

Headers چیست؟

Headers اطلاعات اضافی درباره درخواست HTTP را منتقل می‌کنند.

برای مثال می‌توانیم نوع داده مورد انتظار را مشخص کنیم:

import requests

headers = {
    "Accept": "application/json"
}

response = requests.get(
    "https://api.example.com/users",
    headers=headers
)

print(response.status_code)

API Key چیست؟

بعضی APIها برای شناسایی کاربران و کنترل دسترسی از API Key استفاده می‌کنند.

API Key معمولاً یک رشته متنی است که هنگام ارسال درخواست در Header یا پارامترهای درخواست قرار می‌گیرد.

برای مثال:

import requests

headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(
    "https://api.example.com/data",
    headers=headers
)
نکته امنیتی: API Key واقعی را مستقیماً داخل کد عمومی یا GitHub قرار ندهید. بهتر است کلیدهای حساس را در Environment Variable نگهداری کنید.

کار با API در پایتون

برای کار با API در پایتون معمولاً از کتابخانه Requests استفاده می‌کنیم.

یک نمونه ساده:

import requests

url = "https://api.example.com/data"

response = requests.get(url)

if response.status_code == 200:

    data = response.json()

    print(data)

else:

    print("Request failed")

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

هنگام کار با اینترنت همیشه احتمال خطا وجود دارد. بنابراین بهتر است درخواست‌ها را مدیریت کنیم.

import requests

try:

    response = requests.get(
        "https://api.example.com/data",
        timeout=10
    )

    response.raise_for_status()

    data = response.json()

    print(data)

except requests.exceptions.RequestException as error:

    print("خطا در ارتباط با API:")
    print(error)

پروژه عملی کار با API

فرض کنیم یک API اطلاعات کاربران را در اختیار ما قرار می‌دهد. می‌خواهیم اطلاعات را دریافت کرده و نام کاربران را چاپ کنیم.

import requests

url = "https://api.example.com/users"

try:

    response = requests.get(
        url,
        timeout=10
    )

    response.raise_for_status()

    users = response.json()

    for user in users:

        print(user["name"])

except requests.exceptions.RequestException as error:

    print("خطا:", error)

در پروژه‌های واقعی فقط کافی است URL و ساختار داده را مطابق مستندات API موردنظر تغییر دهیم.

تمرین API در پایتون

تمرین ۱

برنامه‌ای بنویسید که با Requests یک API را فراخوانی کرده و Status Code را نمایش دهد.

پاسخ

import requests

response = requests.get(
    "https://api.example.com/data"
)

print(response.status_code)

تمرین ۲

برنامه‌ای بنویسید که یک API را فراخوانی کرده و JSON دریافت‌شده را چاپ کند.

پاسخ

import requests

response = requests.get(
    "https://api.example.com/data"
)

data = response.json()

print(data)

تمرین ۳

برنامه‌ای بنویسید که یک API را با timeout فراخوانی کرده و خطاهای احتمالی را مدیریت کند.

پاسخ

import requests

try:

    response = requests.get(
        "https://api.example.com/data",
        timeout=10
    )

    response.raise_for_status()

    print(response.json())

except requests.exceptions.RequestException as error:

    print("خطا:", error)

سؤالات متداول درباره API در پایتون

API چیست؟

API روشی برای ارتباط بین نرم‌افزارها و سرویس‌های مختلف است.

REST API چیست؟

REST یک معماری رایج برای طراحی APIهای مبتنی بر HTTP است.

آیا برای کار با API در پایتون باید Requests را یاد بگیریم؟

Requests یکی از ساده‌ترین و محبوب‌ترین کتابخانه‌ها برای ارسال درخواست‌های HTTP در پایتون است و برای شروع گزینه بسیار مناسبی محسوب می‌شود.

API Key چیست؟

API Key یک شناسه یا کلید دسترسی است که بعضی سرویس‌ها برای احراز هویت و کنترل دسترسی کاربران استفاده می‌کنند.

چرا APIها از JSON استفاده می‌کنند؟

JSON ساختاری ساده، خوانا و مناسب برای انتقال داده بین برنامه‌های مختلف دارد و به همین دلیل در APIهای وب بسیار رایج است.