API در Python یکی از ابزارهای ضروری است که به برنامه شما اجازه میدهد تا با نرمافزارهای دیگر ارتباط برقرار کرده و دادههایی را از آنها دریافت کرده یا دادههایی را در اختیار آنها قرار دهد. API را میتوان بهعنوان پلی بین دو سرویس دانست که ارتباط بین نرمافزاری را برای شما سادهتر خواهد کرد. کاربردهای مهم API را میتوان در یکپارچهسازی داده، فروشگاههای اینترنتی، یکپارچهسازی دادهها با شبکههای اجتماعی و دستگاههای اینترنت اشیا مشاهده کرد که در بوت کمپ برنامه نویسی پایتون، میتوانید اطلاعات کاملی درباره این کاربردها به دست بیاورید.
برای استفاده از APIها در پایتون، شما میتوانید از انواع درخواستهای Get (برای دریافت اطلاعات)، Post (برای ارسال دادههای جدید)، Put (برای اصلاح دادههای موجود) و Delete (برای حذف دادههای موجود) استفاده کنید. کتابخانههای مختلفی در پایتون برای کارکردن با APIها وجود دارند که شامل Requests، HTTPx و Urllib میشود. در بوت کمپ برنامهنویسی میتوانید جزئیات مربوط به کارکرد هریک از این کتابخانهها و ماژولها را بیاموزید. مستندسازی APIها به شما کمک میکند تا بتوانید ارتباط بهتری با آنها برقرار کرده و در نتیجه به شکل سادهتری از آنها استفاده کنید. علاوه بر این، پاسخ APIها را معمولا میتوان در قالب جیسون دریافت و پردازش کرد. پس باید نحوه کار با دادههای جیسون را نیز بیاموزید.
با مفهوم api آشنا شوید
API در Python در واقع خلاصه شده عبارت Application Programming Interface است که مجموعهای از قوانین را تعریف میکند تا به نرمافزار اجازه دهد که با نرمافزارهای دیگر تعامل داشته باشد. APIها در واقع متدها و فرمتهای دادهای را تعریف میکنند که برنامهها و اپلیکیشنها میتوانند از این طریق با یکدیگر ارتباط داشته باشند. آنها بهعنوان یک واسط عمل کرده و ارتباط بین برنامهای را راحتتر میکنند. به عبارت دیگر، میتوان گفت که یک API بهعنوان قراردادی بین سیستمهای نرمافزاری مختلف عمل کرد و آنها را قادر میسازد تا بهصورت یکپارچه باهم کار کنند.
نحوه عملکرد APIها به این شکل است که آنها به توسعهدهندگان اجازه میدهند تا به عملکرد یا دادههای یک سرویس، بدون نیاز به دسترسی به عملکردهای داخلی آن سرویس، دسترسی داشته باشند. همین موضوع نیز فرایند ارسال درخواست و تبادل اطلاعات را در برنامهها راحتتر میکند. از جمله کاربردهای مهمی که APIها در پایتون دارند میتوان به موارد زیر اشاره کرد:
1- یکپرچهسازی دادهها: APIها به پایگاههای داده اجازه میدهند تا دادههای خود را با سرویسهای نرمافزاری دیگر به اشتراک بگذارند.
2- تجارت الکترونیک: فروشگاههای آنلاین از API برای ارتباط با سرویسهای پرداختی استفاده کرده و تراکنشهای راحتتری را از این طریق انجام میدهند.
3- یکپارچهسازی شبکههای اجتماعی: بسیاری از وبسایتها و اپلیکیشنها از APIهای شبکههای اجتماعی استفاده کرده و به این ترتیب به کاربران اجازه میدهند تا با حسابهای شبکههای اجتماعی خود وارد شده و محتوای مدنظرشان را به اشتراک بگذارند.
4- دستگاههای اینترنت اشیا: در اینترنت اشیا، ترموستاتهای هوشمند، ردیابهای تناسب اندام و … از APIها برای ارتباط دادهها با سرور استفاده میکنند.
فرایند ساخت درخواست API در پایتون
برای کار با api در پایتون شما نیازمند ابزارهایی مانند requests هستید. به همین علت، ابتدا باید آنها رادر سیستم خود نصب کنید. برای نصب requests نیازمند استفاده از دستور زیر خواهید بود:
pip3 install requests
بعد از اینکه اقدام به نصب آن کردید، نیازمند اضافه کردن آن به پروژه خود خواهید بود که این کار را میتوانید به شکل زیر در کدهای پایتون انجام دهید:
import requests
حال اجازه دهید تا با یک مثال، نحوه کار با API در پایتون را به شما توضیح دهیم:
در این مثال کاربردی از پایتون، دادههای سهام را بهصورت لحظهای از IBM دریافت کرده و این کار را در فواصل زمانی 5 دقیقهای انجام میدهیم:
import requests
import json
# Function to get live stock data for a symbol
def get_stock_data():
url = f"https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=IBM&interval=5min&outputsize=full&apikey=demo"
response = requests.get(url)
# Check if the response is successful
if response.status_code == 200:
data = response.json()
last_refreshed = data["Meta Data"]["3. Last Refreshed"]
price = data["Time Series (5min)"][last_refreshed]["1. open"]
return price
else:
return None
stock_prices = {}
price = get_stock_data()
symbol="IBM"
if price is not None:
stock_prices[symbol] = price
print(f"{symbol}: {price}")
علاوه بر این، باید توجه داشته باشید که شما میتوانید از این ابزار برای درخواست HTTP به APIها نیز استفاده کنید. برای مثال فرض کنید که قصد داریم اطلاعات آب و هوایی را از OpenWeatherMap API دریافت کنیم. این کار را به شکل زیر انجام خواهیم داد:
import requests
api_key = “YOUR_API_KEY”
city = “Delhi”
url = f”http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}”
response = requests.get(url)
data = response.json()
دقت داشته باشید که برای کارکردن با api در پایتون نیازمند این هستید که در قطعه کد بالا به جای “YOUR_API_KEY” از کلیدی که از سایت OpenWeatherMap دریافت کردهاید استفاده کرده و آن را جایگزین کنید. این مثال یک درخواست اولیه GET را به شما آموزش میدهد.
در مرحله بعدی نیازمند این هستید که پاسخهای دریافتی از API را مدیریت کنید. دقت داشته باشید که پاسخهای دریافتی از API معمولا در قالب جیسون هستند. ماژول جیسون در پایتون میتواند برای مدیریت این پاسخها بهترین گزینه باشد. برای مثال، نمونه کد زیر را مشاهده کنید:
temperature = data[‘main’][‘temp’]
description = data[‘weather’][0][‘description’]
print(f”Temperature in {city}: {temperature}K, Description: {description}”)

کدهای وضعیت API در پایتون
در آموزش rest api در پایتون باید به این نکته توجه کنید که آشنایی با کدهای وضعیت API در پایتون ضروری خواهد بود که این کدها شامل مواردی که در جدول زیر آمده است، میشود:
|
کد وضعیت |
توضیحات |
|
200 OK |
این کد نشان میدهد که سرور با موفقیت درخواست را پردازش کرده و دادههای درخواستی را بازگردانده است. |
|
201 Created |
یک منبع جدید در سرور بهعنوان نتیجه درخواست ایجاد شده است. |
| 204 No Content |
درخواست بهصورت موفقیتآمیز ارسال شده، ولی هیچ داده اضافی برای بازگشت و پاسخ وجود ندارد. |
| 300 Multiple Choices |
منبع درخواستی دارای چندین نمایش مختلف است که هریک دارای URLهای مخصوص به خود هستند. |
|
302 Found (Temporary Redirect) |
منبع درخواستی توسط API به طور موقت در یک URL دیگر قرار گرفته است. |
|
304 Not Modified |
نشان میدهد که نسخه ذخیره شده مشتری از منبع هنوز معتبر بوده و نیازی به دانلود مجدد دادهها نیست. |
| 400 Bad Request |
این کد نشان میدهد که درخواست شما برای API دارای سینتکس نادرستی بوده یا حاوی دادههای نامعتبر است که آن را برای سرور غیرقابل درک کرده است. |
| 401 Unauthorized |
این کد وضعیت نشان میدهد که احراز هویت برای دسترسی به سرور موردنیاز است. از طرف دیگر؛ ممکن است نشاندهنده عدم اعتبار مشتری باشد، برای مثال ممکن است از کلید API نادرستی استفاده کرده باشید. |
|
500 Internal Server Error |
این کد وضعیت نشان میدهد که یک خطای غیرمنتظره در هنگام پردازش درخواست شما رخ داده است. |
| 502 Bad Gateway |
502 Bad Gateway نشان میدهد که سرور بهعنوان یک دروازه یا پروکسی عمل میکند و یک پاسخ نامعتبر را ارسال کرده است. |

آشنایی با انواع درخواستهای پایتون
در آموزش ساخت api با پایتون و برای کارکردن با APIها، باید دقت داشته باشید که انواع مختلفی از درخواستهای پایتون وجود دارند که هریک از آنها یک متد نامیده میشوند. از جمله متدهای رایج HTTP که باید با آنها آشنا شوید میتوان به موارد زیر اشاره کرد:
– GET: این درخواست یا متد برای بازیابی اطلاعات مورداستفاده قرار میگیرد.
– POST: این درخواست وقتی استفاده میشود که قصد داشته باشید دادههای جدید را ارسال کنید.
– PUT: این درخواست برای بهروزرسانی دادههای موجود کاربرد دارد.
– DELETE: در صورتی که قصد حذف دادهها با استفاده از API را داشته باشید، میتوانید از این درخواست یا متد استفاده کنید.
کتابخانههایی که برای ساخت API Requests به آنها نیاز دارید
در api نویسی با پایتون، برای اینکه بتوانید درخواستهای API در پایتون را ایجاد کنید، نیازمند کتابخانههایی خواهید بود که از جمله محبوبترین آنها میتوان به موارد زیر اشاره کرد:
1- Requests: این کتابخانه پایتون، به علت سادگی و سهولت در استفاده، بسیار مشهور شده است. این گزینه یک انتخاب عالی برای مبتدیان خواهد بود و در کاربردهای صنعتی نیز قابل استفاده است. این کتابخانه از درخواستهای همزمان پشتیبانی کرده و برای مسدودکردن عملیات I/O بهترین گزینه است.
2- HTTPx: یک سرویس گیرنده HTTP با قابلیت همزمانی یا async-capable است. این کتابخانه نسبت به دو کتابخانه دیگر جدیدتر بوده درخواستهای همزمان و ناهمزمان را پشتیبانی میکند. این کتابخانه یکی از کتابخانه های پایتون برای کار با API در اپلیکیشنهایی است که کارایی بالایی دارند.
3- Urllib یک ماژول موجود در کتابخانه استاندارد پایتون است که برای عملیات اساسی در زمینه کارکردن با APIها مفید خواهد بود. این ماژول در مقایسه با کتابخانه Requests کاربرپسندتر است. استفاده از این کتابخانه نیازمند کد بیشتری برای انجام وظایف روزمره بوده و برای پروژههای جدید معمولا محبوبیت کمتری دارد.

آشنایی با مفهوم API Documentation یا مستندسازی برای API
برای کارکردن با APIها در زبان برنامهنویسی پایتون نیازمند مستندسازی هستید که به تعامل هرچه بهتر با APIها کمک میکند. در مثال زیر، مشاهده میکنید که ما از NewsAPI استفاده کرده و اطلاعات مربوط به اخبار مختلف کشورها و افراد مشهور را دریافت میکنیم. برای بهروزرسانی اخبار به یک کلید ویژه به نام کلید API نیاز داریم. به این ترتیب، میتوانیم به پایگاه داده این API دسترسی پیدا کرده و از آن استفاده کنیم. در مرحله بعدی ما یک آدرس URL را ایجاد کردهایم که مشخص میکند، دقیقا چه نوع اخباری را نیاز داریم. فراموش نکنید که شما میتوانید این کد را در برنامه کد نویسی پایتون در اندروید نیز اجرا کنید.
بعد از اینکه پارامترهای درخواست خود را تنظیم کردیم، اقدام به ارسال آن کرده و پاسخ این API را دریافت خواهیم کرد. این وضعیت به ما میگوید که آیا درخواست ما موفقیتآمیز بوده یا مشکلی در آن وجود دارد. در نهایت میتوانیم بهسادگی این وضعیت را چاپ کرده و نتیجه را ببینیم. به این شکل، ما میتوانیم یک مستندسازی خوب و قوی برای API خود داشته باشیم تا افراد بتوانند از Api ما به شکل بهتری استفاده کنند. قطعه کد زیر را مشاهده کنید:
import requests
# Replace ‘API_KEY’ with your actual API key from NewsAPI
API_KEY = ‘3805f6bbabcb42b3a0c08a489baf603d’
url = f"https://newsapi.org/v2/top-headlines?country=us&category=business&apiKey={API_KEY}"
response = requests.get(url)
print(response.status_code)

کارکردن با دادههای جیسون در پایتون
در حین کار با پایتون در ترموکس، یادگیری نحوه استفاده از دادههای جیسون در این زبان برنامهنویسی از اهمیت زیادی برخوردار است. جیسون یک فرمت خاص دادهای است که بهعنوان زبان اصلی APIها کار میکند و راهی را برای رمزگذاری ساختارهای داده در قالب ساده را برای ما فراهم میکند. برای اینکه این ساختار را بیاموزید، اسکریپت پایتونی نوشتهایم که مانند یک متصدی اخبار دیجیتال کار میکند. با استفاده از کتابخانه requests به جدیدترین اخبار دسترسی پیدا کرده و آخرین سرفصلهای تجاری را از ایالات متحده دریافت میکنیم.
زمانی که این دادهها را دریافت کردیم، پایتون وارد عمل شده و آنها را مرتب میکند. در ادامه این دادهها را در یک لیست مرتب ارائه خواهد داد. این قطعه کد، میتواند نحوه استفاده از API ها و فایل جیسون را به شما آموزش دهد که در آموزش برنامه نویسی اهمیت زیادی دارد.
import json
import requests
def fetch_and_print_articles(api_url):
response = requests.get(api_url)
if response.status_code == 200:
articles = response.json().get(‘articles’, [])
for index, article in enumerate(articles[:3], start=1):
print(f"Article {index}:\n{json.dumps(article, sort_keys=True, indent=4)}\n")
else:
print(f"Error: {response.status_code}")
API_KEY = ‘3805f6bbabcb42b3a0c08a489baf603d’
api_endpoint = f"https://newsapi.org/v2/top-headlines?country=us&category=business&apiKey={API_KEY}"
fetch_and_print_articles(api_endpoint)
def jprint(obj):
print(json.dumps(obj, sort_keys=True, indent=4))
# Example usage:
# jprint(response.json())

سخن پایانی
APIها در زبان برنامهنویسی پایتون این امکان را فراهم میکنند که شما درخواستی را برای یک پایگاه داده در سرویس دیگر ارسال کرده و دادههایی را از آن دریافت کنید. پاسخ آنها در یک کد وضعیت ذخیره میشود که مواردی همچون موفقیتآمیزبودن درخواست، ارسال دادههای نامعتبر، خراب شدن سرور و بروز مشکل برای آن و تغییر URL منبع درخواستی را شامل میشود. وقتی که یک API بهخوبی مستندسازی میشود، برنامهنویس میداند که دقیقا چه اطلاعاتی را باید ارسال کرده و چه پاسخی را براین اساس دریافت خواهد کرد.
وقتی که پاسخ یک API را دریافت میکنید، باید بدانید که این پاسخ در قالب جیسون ذخیرهسازی میشود. در سایت بامداد، میتوانید توضیحات کاملی درباره نحوه کار جیسون در زبان برنامهنویسی پایتون مشاهده کرده و بیاموزید که از چه ابزارهایی میتوانید برای کارکردن با دادههای جیسون استفاده کنید.


