در این مطلب از مجله فرادرس روش‌های ساخت API با پایتون را بررسی کرده‌ایم. رایج‌ترین تکنیک‌های ساخت «API» استفاده از فریم‌ورک‌های فلسک، «FastAPI» و جنگو است. اما بدون این ابزارهای حرفه‌ای و با تکیه بر کتابخانه‌های معمولی پایتون هم می‌توانیم API ایجاد کنیم. API-ها برای توسعه اپلکیشن‌های تحت وب و برقراری ارتباط بین برنامه‌های مختلف استفاده می‌شوند. داده‌های منتقل شده با این تکنیک در بیشتر اوقات با فرمت «JSON» هستند. فرمت JSON ساختاری بسیار شبیه به دیکشنری‌های پایتون دارد. در نتیجه هم برای کامپیوتر‌ها قابل درک است و هم کاربر انسانی می‌تواند به راحتی اطلاعات مورد نیاز خود را از دون آن استخراج کند. توسعه‌دهندگان حرفه‌ای پایتون برای ساخت ابزارهای مبتنی بر شبکه و اینترنت باید بتوانند با API کار کنند.

آنچه در این مطلب می‌آموزید:

  • ابتدا توضیح مختصری درباره API خوانده و با کارایی آن آشنا می‌شوید.

  • سپس روش ساخت API استفاده از فریم‌ورک Flask را یاد می‌گیرید.

  • با فریم‌ورک جنگو آشنا شده و یاد می‌گیرید که چگونه در جنگو API بسازید.

  • متوجه می‌شوید که DRF چیست و چگونه با کمک آن می‌توانید API بسازید.

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

  • با بررسی چند مثال مختلف می‌آموزید که چکونه در عمل از API‌ استفاده کنید.

فهرست مطالب این نوشته
997696

رایج‌ترین روش‌های ساخت API با پایتون را در ادامه این مطلب، آموزش داده‌ایم. ابتدا از روش ساخت با فریم‌ورک فلسک شروع کردیم. بعد از آن کار با فریم‌ورک‌های FastAPI و «DRF» را نیز بررسی کرده‌ایم. به عنوان گزینه آخر نیز با کدهای پایتون و بدون فریم‌ورک‌های تخصصی API کار کرده‌ایم. در نهایت برای کار با API-های ارائه شده توسط سایت‌های معتبر، سه مثال مختلف را هم بررسی کردیم.

روش ساخت API با پایتون چیست؟‌

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

  • استفاده از فریم‌ورک «Flask»
  • استفاده از فریم‌ورک «FastAPI»
  • استفاده از «رست فریم‌ورک جنگو» (Django Rest Framework) یا «DRF»
  • استفاده از روش دستی و بدون فریم‌ورک‌های پایتون که در این روش از کتابخانه‌ «Requests» استفاده می‌کنیم.

برای استفاده از این ابزارها، باید از پایتون نسخه ۳.۹ به بالا استفاده کنیم. همچنین به «IDE» یا کد ادیتور مناسب نیز نیاز داریم. در این مطلب از کد ادیتور «Visual Studio Code» استفاده کرده‌ایم.

دیاگرام روش های ساخت api در پایتون

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

API چیست؟

کلمه API سرنامی از واژه‌های انگلیسی عبارت «رابط برنامه نویسی اپلیکیشن» (Application Programming Interface) است. در واقع API مجموعه‌ای از قوانین و دستورالعمل‌هاست که به اپلیکیشن‌های نرم‌افزاری مختلف برای ارتباط برقرار کردن و تعامل با یکدیگر کمک می‌کند. برنامه‌ها برای دریافت داده یا به‌اشتراک‌گذاری آن باید با یکدیگر ارتباط برقرار کنند. API مشخص می‌کند که این ارتباط با چه متدها و قالب‌های داده‌ای انجام شود.

مانیتوری که صفحه کدنویسی را نشان می‌دهد در کنار یک فنجان قهوه

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

استفاده از فریم‌ورک Flask

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

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

mkdir flask-example
cd flask-example

با نوشتن کدهای بالا در خط فرمان، دایرکتوری به نام flask-example  ایجاد می‌کنیم. سپس وارد این دایرکتوری شده و محیط مجازی خود را راه‌اندازی می‌کنیم. برای ساخت محیط مجازی، وقتی در داخل flask-example  هستید، کد زیر را نوشته و دکمه «Enter» را فشار دهید.

python -m venv .venv

کد بالا باعث ساخته شدن دایرکتوری جدیدی به نام .venv  می‌شود. این دایرکتوری داخل فولدر پروژه قرار دارد. با کمک دایرکتوری .venv  محیط مجازی خود را مدیریت می‌کنیم.

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

pip install flask

برای ساخت API ابتدا فایلی به نام main.py  داخل فولدر پروژه ایجاد می‌کنیم. سپس این فایل را با استفاده از کد ادیتور ویژوال استودیو کد باز کرده و کدهای زیر را در آن می‌نویسیم.

نکته: می‌توانیم فایل را مستقیما در کد ادیتور ایجاد کرده و سپس داخل فولدر پروژه ذخیره کنیم.

برای اجرای کدهای پایتون روش‌های مختلفی وجود دارند. درباره این اپلیکیشن هم ۲ راه مختلف وجود دارد.

  1. از داخل ویرایشگر ویژوال استودیو کد برنامه را اجرا کنیم.
  2. به وسیله نوشتن و اجرای کد زیر در ترمینال برنامه را اجرا کنیم. قبل از نوشتن کد زیر باید به محیط پروژه هدایت شوید.
python main.py

بعد از اجرای کدهای بالا، API ساده‌ای ساخته می‌‌شود. با مراجعه به آدرس http://localhost:5000/api/greet  در مرورگر، پیغام خوشامدگویی خود را مشاهده می‌کنید.

تصویری از اطلاحات JSON در پس زمینه سفید

برای بررسی این پاسخ می‌توانید با استفاده از نرم‌افزار پستمن به آدرس http://localhost:5000/api/greet  درخواست GET ارسال کنید. در پاسخ، خروجی از نوع JSON و به شکل زیر مشاهده خواهید کرد.

استفاده از فریم‌ورک FastAPI

FastAPI فریم‌ورکی مدرن، سریع و بسیار کارآمد است. این فریم‌ورک بر اساس «Type Hint»-های استاندارد پایتون ساخته شده است. فریم‌ورک FastAPI ابزار بسیار خوبی برای ساختن API است. مهم‌ترین ویژگی این فریم‌ورک سرعت بسیار زیاد آن است. در ادامه این بخش، با کمک مثال بسیار ساده‌ای، روش استفاده از فریم‌ورک FastAPI را برای ساخت API آموزش داده‌ایم. برای کسب مهارت در کار با این ابزار پیشنهاد می‌کنیم که فیلم آموزش ساخت وب سرویس API با FastAPI در پایتون، دوره مقدماتی همراه با اعطای گواهینامه را از فرادرس مشاهد کنید. لینک مربوط به این فیلم را در پایین نیز قرار داده‌ایم.

برای ساخت پروژه FastAPI، ابتدا دایرکتوری جدیدی ایجاد می‌کنیم.

mkdir fastapi-example
cd fastapi-example

با نوشتن هر کدام از کدهای بالا به صورت خط به خط در ترمینال و زدن دکمه «Enter» ابتدا فولدری با نام fastapi-example  ساخته می‌شود. سپس وارد این پوشه می‌شویم.

بهتر است که پروژه خود را در فضای مجازی پایتون ایجاد کنیم. پس با کد زیر یک فضای مجازی در این فولدر می‌سازیم.

python -m venv .venv

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

اکنون باید فریم‌ورک fastapi و ماژول uvicorn را بر روی پایتون نصب کنیم. برای انجام این کار از کد زیر کمک می‌گیریم.

pip install fastapi uvicorn

برای ساخت API ابتدا فایلی به نام main.py  در فولدر پروژه ایجاد می‌کنیم. سپس با استفاده از ویژوال استودیو کد، این فایل را باز کرده و کدهای زیر را در آن می‌نویسیم.

بعد از اجرای کدهای بالا و با مراجعه به آدرس http://localhost:8000/api/greet  می‌توانیم خروجی مانند تصویر زیر را مشاهده کنیم.

اطلاعات با فرمت JSON و یک تیک آبی در بالای صفحه

برای تست این API، آدرس زیر را در ترمینال لینوکس یا خط فرمان ویندوز نوشته و دکمه «Enter» را فشار می‌دهیم.

curl http://localhost:8000/api/greet

در این صورت خروجی با فرمت JSON و به شکل زیر نشان داده می‌شود.

با اجرای این برنامه، به شکل خودکار مستندات مربوط به API تعاملی را هم دریافت می‌کنیم. برای دسترسی به این مستندات باید آدرس http://localhost:8000/docs  را در مرورگر خود باز کنیم.

تصویری از api-های FastAPI و بخش مستندات

یادگیری جنگو با فرادرس برای ساخت API

جنگو (Django) یکی از فریمورک‌های رایگان و اوپن سورس پایتون است. این فریمورک برای توسعه سریع و آسان وب‌سایت‌ها و اپلیکیشن‌های تحت وب ساخته شده است. با استفاده از جنگو، نیاز نیست ساختارهای پیچیده وب‌سایت را از صفر طراحی کنیم. در نتیجه می‌توانیم تمرکز خود را روی طراحی منطق برنامه بگذاریم. این فریم‌ورک در عین سادگی، ابزارها و امکانات قدرتمندی دارد. به همین دلیل با کمترین مقدار کدنویسی می‌توانیم برنامه‌های پیچیده تحت وب بسازیم. ابزارها و قابلیت‌های پیش‌فرض جنگو، انجام کارهای متداول را ساده‌تر کرده است.

مجموعه آموزش جنگو – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش جنگو از دوره مقدماتی تا پیشرفته هدایت شوید.

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

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

استفاده از DRF

«رست فریم‌ورک جنگو» (Django Rest Framework) ابزار بسیار قدرتمند و انعطاف‌پذیری برای ساخت «Web API»-ها است. این فریم‌ورک بر روی ساختار و چهارچوب کلی جنگو ساخته شده است. در بخش پایین، با استفاده از مثال ساده‌ای، روش استفاده از این ابزار را برای ساخت API بررسی کرده‌ایم. اما اگر بخواهید در استفاده از آن حرفه‌ای شوید، پیشنهاد می‌کنیم فیلم آموزش فریم ورک جنگو در پایتون، ساخت Web APIs با Django Rest را از فرادرس مشاهده کنید. این فیلم با ۵ ساعت آموزش ویدئویی نکات کلی و جزئی بسیار فراوانی را پوشش داده است. برای کمک به مخاطبان مجله، لینک مربوط به آن را در پایین نیز قرار داده‌ایم.

برای ساخت API با پایتون در DRF هم بهتر است که مانند موارد قبلی فولدر مخصوصی برای این پروژه بسازیم.

mkdir django-api-example
cd django-api-example

کدهای بالا به ترتیب فولدری به نام django-api-example  ساخته و سپس وارد آن فولدر می‌‌شوند.

در داخل فولدر پروژه، با استفاده از دستور زیر، محیط مجازی پایتون را ایجاد می‌کنیم.

python -m venv .venv

با اجرای دستور بالا، پوشه جدیدی به نام .venv  در فولدر پروژه ایجاد می‌شود.

سپس با کمک کد زیر هر دو فریم‌ورک جنگو و DRF را بر روی سیستم نصب می‌کنیم.

pip install django djangorestframework

جنگو نسبت به فریم‌ورک‌های قبلی، ساختار پیچیده‌تر و کامل‌تری دارد. بنابراین روند ایجاد پروژه با آن هم کمی پیچیده‌تر است.

  • ابتدا با اجرای دستور زیر در خط فرمان، پروژه جنگویی جدیدی به نام djangoApiExample  ایجاد می‌کنیم.
django-admin startproject djangoApiExample
  • سپس با اجرای دستور cd djangoApiExample وارد فولدر پروژه ساخته شده می‌‌شویم.
  • در این فولدر کد زیر را نوشته و دکمه «Enter» را فشار می‌دهیم.
python manage.py startapp api

اکنون داخل پروژه djangoApiExample  اپلیکیشنی برای کار با API-ها به نام api  ساخته شده است.

سه مانیتور مختلف در حال نمایش اطلاعات متفاوت و محیط برنامه نویسی در کنار یکدیگر قرار دارند
  • ویرایشگر کد خود را باز کرده و در داخل مسیر پروژه وارد فولدر اپلیکیشن api  می‌شویم. اینجا باید فایل models.py  را پیدا کنیم. کدهای زیر را در داخل این فایل وارد می‌کنیم.

با کدهای بالا شیئی به نام Greeting  ایجاد کرده‌ایم. می‌خواهیم که اطلاعات این شیء را به API تبدیل کنیم. برای این کار باید از «Serializer»-ها استفاده کنیم. پس در داخل پوشه api  فایلی به نام serializers.py  می‌سازیم. از این قسمت به بعد از تکنولوژی‌های DRF استفاده می‌کنیم.

کدهای زیر را در داخل فایل serializers.py  بنویسید.

باید ویو مخصوصی را برای نشان دادن API تنظیم کنیم. پس به فایل views.py  رفته و کدهای زیر را وارد کنید.

حالا باید «URL» مخصوصی را تعریف کنیم. با کمک این URL آدرس مشخصی به ویو بالا وصل می‌شود. پس در داخل همین فولدر، فایلی به نام urls.py  ایجاد کرده و کدهای زیر را در آن وارد می‌کنیم.

بعد از نوشتن آدرس URL ویو ساخته شده، باید این فایل را به پروژه اصلی معرفی کنیم. برای این کار، یک فولدر به عقب می‌رویم. در فولدر djangoApiExample  فایل urls.py  را پیدا می‌کنیم. سپس با اضافه کردن کدهای زیر، آدرس‌های اپلیکیشن api را از طریق پروژه اصلی در دسترس قرار می‌دهیم.

اما هنوز اپلیکیشن کار نمی‌کند. برای اینکه برنامه به درستی کار کند ،باید اپلیکیشن ساخته شده api  را به پروژه اصلی معرفی کنیم. به این منظور، وارد فایل تنظیمات settings.py  می‌‌شویم. این فایل در داخل دایرکتوری پروژه djangoApiExample  قرار دارد. اکنون به بخش INSTALLED_APPS  می‌رویم. طبق کدهای نمایش داده شده در پایین، دو فریم‌ورک rest_framework  و اپلیکیشن api  را به این قسمت اضافه می‌کنیم.

اکنون پروژه ما ساخته شده است. اما قبل از اجرای پروژه، اول باید مدل ساخته شده را به پایگاه داده معرفی کنیم. به این منظور در خط فرمان ابتدا کد زیر را وارد کنید.

python manage.py makemigrations

و سپس دستور زیر را اجرا کنید.

python manage.py migrate

مطمئن شود که هر دو دستور در محیط دایرکتوری djangoApiExample  اجرا شوند.

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

python manage.py runserver

اکنون با مراجعه به آدرس http://localhost:8000/api/greet/  اطلاعات API ساخته شده با پایتون و جنگو را مشاهده می‌کنید.

یک صفحه وب ابتدایی برای نمایش داده‌های JSON با پیغام Greet

در زمان تنظیم کدها می‌توان پارامتر JSON format  را هم به «Endpoint» اضافه کرد. در این صورت می‌توان با استفاده از دستور «Curl» یا نرم‌افزار «Postman» هم آن را بررسی کرد.

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

برای کار با API در پایتون به ابزارهایی مانند کتابخانه «Requests» نیاز داریم. این کتابخانه به صورت پیش‌‌فرض بر روی سیستم نصب نمی‌شود. در نتیجه خودمان آن را نصب می‌کنیم.

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

pip3 install requests

بعد از اینکه کتابخانه requests  نصب شد، برای استفاده در کدهای خود آن را ایمپورت می‌کنیم.

اکنون به راحتی می‌توانیم API بسازیم یا از API-های دیگر استفاده کنیم. البته در این مطلب به معرفی و آموزش استفاده از کتابخانه Requests در پایتون نپرداخته‌ایم. برای آشنایی بیشتر با این ماژول بسیار کاربردی می‌توانید مطلب مربوط به آن را در مجله فرادرس بخوانید. در ادامه این بخش، چند مثال مختلف درباره ساخت و استفاده از API-ها را بررسی کرده‌ایم. اما لازم است که قبل از پرداختن به مثال‌ها با انواع «کدهای وضعیت» (Status Codes) در API آشنا شویم.

کدهای وضعیت API

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

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

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

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

مثال اول: استخراج قیمت سهام با کمک API

در این برنامه پایتون، می‌خواهیم قیمت زنده سهام شرکت «IBM» را با استفاده از API سایت «Alpha Vantage» بدست بیاوریم. در این برنامه از بازه‌های زمانی – کندل‌های – ۵ دقیقه‌ای برای فراخوانی اطلاعات استفاده می‌کنیم. همچنین می‌خواهیم قیمت سهام در لحظه باز شدن بازار را بر روی ترمینال چاپ کنیم.

  • در برنامه پایین، برای ارسال درخواست API از کتابخانه requests  استفاده کرده‌ایم.
  • سپس با استفاده از «کد وضعیت» (Status Code) بررسی می‌کنیم که آیا درخواست ارسال شده موفقیت آمیز بوده است یا نه.
  • اگر نتیجه موفقیت‌آمیز بود – کد وضعیت برابر با 200 بود – پاسخ بدست آمده از API را به دیکشنری پایتون تبدیل می‌کنیم.
  • در پایان برنامه‌ هم داده‌های مورد نیاز خود را ذخیره کرده‌ایم.

بعد از اجرای کدهای بالا، خروجی به شکل IBM: 264.0500 در کنسول نمایش داده می‌شود. البته توجه کنید که این خروجی، قیمت سهام در زمان اجرای برنامه توسط ماست. شاید این قیمت در زمان اجرای برنامه توسط شما تغییر کرده باشد.

مثال دوم: دریافت اخبار با کمک API

در این مثال از «NewsAPI» استفاده می‌کنیم. این API، اطلاعات اخبار مربوط به کشور‌های مختلف و مردم مشهور را فراهم کرده است. برای گرفتن خبر از NewsAPI نیاز به کلید مخصوصی داریم. به این کلید «API key» گفته می‌شود. برای درک بهتر API key، آن را مانند رمز عبور دیجیتالی در نظر بگیرید. این کلید به برنامه نویسان برای استفاده از پایگاه داده خبری NewsAPI کمک می‌کند.

نکته: برای استفاده از API سایت‌های مختلف، مطالعه مستندات API بسیار مهم است. با کمک این مستندات می‌توانیم از API‌-ها به شکل صحیح استفاده کنیم. در صورت ساختن API برای سایت خودمان هم بهتر است که مستندات خوب و جامعی تهیه کنیم.

در کدهای زیر این کلید را در متغیری به نام API_KEY  ذخیره کرده‌ایم.

بعد از اجرای کدهای بالا، باید خروجی زیر را در کنسول پایتون مشاهده کنید. این خروجی کد وضعیت ارسال درخواست API است.

200

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

  • ابتدا کلید API را در متغیری به نام API_KEY  ذخیره کرده‌ایم.
  • سپس آدرس URL یا وب‌سایت مشخصی را نوشتیم. در مثال بالا، آدرس مربوط به وب‌گاه NewsAPI است. این URL به سایت NewsAPI می‌گوید که درخواست ارسال شده به چه نوع اخباری نیاز دارد. در واقع URL مانند این است که به مسئول کتابخانه بگوییم، بخش اقتصادی روزنامه مشخصی از شهر خاصی را نیاز داریم.
تصویری از خطوط نورانی سفید بر روی دیوار - ساخت API با پایتون
  • بعد از اینکه درخواست را ساختیم. آن را ارسال می‌کنیم. اکنون، برنامه پیامی را با استفاده از این URL به NewsAPI ارسال می‌کند. این کار تقریبا مانند کلیک کردن بر روی لینک خاصی برای باز شدن صفحه متعلق به آن است.
  • وقتی که پیام ارسال شد، NewsAPI یک «بروزرسانی وضعیت» (Status Update) برمی‌گرداند. این بروزرسانی وضعیت، همان کد وضعیت است. کد وضعیت به مبدا می‌گوید که آیا درخواست ارسال شده با موفقیت پردازش شده است یا نه.
  • در نهایت هم فقط کد وضعیت را چاپ کرده‌ایم. اگر کد وضعیت 200  بود، یعنی آن که همه‌چیز همان‌طوری کار می‌کند که برنامه‌ریزی کرده‌ایم.

در این مثال، به دنبال مهم‌ترین خبر‌های اقتصادی از کشور فرانسه هستیم. این اخبار به صورت JSON به کلاینت ارسال می‌شوند. در مستندات بیشتر API-ها معمولا نوشته شده است که پاسخ آن‌ها به صورت JSON ارسال می‌شود. برای استخراج اطلاعات JSON در پایتون از متد response.json() استفاده می‌کنیم. در بخش بعدی با استفاده از این متد خروجی کامل پاسخ API را بدست آورده‌ایم.

کارکردن با داده‌های JSON

برای ساخت API با پایتون لازم است که بتوانیم با داده‌های JSON نیز بخوبی کار کنیم. تقریبا در تمام API-ها از JSON استفاده شده است. JSON به توسعه‌دهندگان کمک می‌کند که داده‌ها را به شکل قابل درک برای کامپیوتر‌ها در بیاورند. فرض کنیم که در حال بررسی وب‌سایت خبری هستیم. تمام داده‌هایی قابل مشاهده، مانند تیتر خبرها، توضیحات، تصاویر و غیره، اغلب اوقات – مانند این مثال – به شکل و قالب JSON مرتب‌ می‌شوند. JSON زبان مشترک بین API‌-ها مختلف و کامپیوترها است.

این اسکریپت مانند دستیار اخبار دیجیتالی عمل می‌کند. در فهرست زیر، تمام مراحل انجام شده در کدهای بالا را به ترتیب توضیح داده‌ایم.

  • در کدهای بالا برای صحبت با NewsAPI از کتابخانه requests  در پایتون استفاده کرده‌ایم.
  • اسکریپت بالا جدید‌ترین اخبار دیجیتالی فرانسه را از سایت NewsAPI بدست می‌آورد.
  • بعد از بدست آوردن داده‌ها، پایتون آن‌ها را مرتب‌سازی می‌کند.
  • سپس تمام خبر‌های بدست‌‌آمده در یک لیست تمیز، نمایش داده می‌شوند.

عملکرد کد بالا را می‌توان به صحبت با مسئول کتابخانه تشبیه کرد. از او در خواست کرده‌ایم که سه خبر اول روز را بما بدهد. مسئول کتابخانه هم از بالای انبوهی از خبر‌ها سه مورد اول را جدا کرده و در اختیار ما می‌گذارد. در فرایند بالا روش کار API‌-ها و JSON را در کنار یکدیگر مشاهده می‌کنیم. همچنین می‌بینیم ساخت API با پایتون چقدر ساده بوده و چگونه می‌توانیم اطلاعات بدست آمده را با کمک پایتون بررسی کنیم.

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

بعد از اجرای کدهای بالا، خروجی به شکل خلاصه‌ای از اطلاعات اخبار در فرمت JSON نمایش داده می‌شود.

دریافت اخبار کشور خاص با NewsAPI

در زمان استفاده از API – مخصوصا API-ها مشهوری مانند NewsAPI – بسیار مهم است که روش گزینش داده‌های مورد نظر خود را بلد باشیم. در تکه کد پایین از NewsAPI برای بدست آوردن سرخط خبرها استفاده کرده‌ایم. این کد را طوری تنظیم می‌کنیم که فقط اخبار مربوط به کشور آلمان را برگرداند.

برای صحبت با بنگاه خبری NewsAPI باید از آدرس URL مشخصی به عنوان «نقاط انتهایی» (Endpoint) استفاده کنیم. این آدرس URL را در متغیری به نام API_URL  ذخیره کرده‌ایم. همچنین هر توسعه‌دهنده یا کاربری، کلید API مخصوص به خود را دریافت می‌کند. این کلید برای بررسی جواز دسترسی کاربر به داده‌های درخواست شده به کار برده می‌‌شود.

در کدهای پایین کلید API در متغیری به نام API_KEY  ذخیره شده است.

برای ارسال درخواست API و گرفتن پاسخ، فقط داشتن آدرس Endpoint و کلید API کافی نیست. اغلب اوقات، API-ها فقط امکان دسترسی به سطح خاصی از سفارشی‌سازی را به کاربران می‌دهند. اینکه کاربران می‌توانند با کمک پارامترهای مشخصی درخواست خود را دقیق‌تر کنند. در نتیجه می‌توانند داده‌های مشخص‌تری با قالب‌ شخصی‌سازی‌ شده‌تری را دریافت کنند. همه این پارامترها را باید داخل دیکشنری خاصی به نام params  بنویسیم.

با توجه به موارد گفته شده و اینکه در کدهای بالا فقط اخبار مربوط به کشور آلمان را می‌خواهیم. به‌جای پارامتر country  از sources استفاده کرده‌ایم. مقدار این پارامتر را هم برابر با رشته die-zeit قرار داده‌ایم. یعنی حتما از علامت کوتیشین به شکل “die-zeit” استفاده می‌کنیم. همچنین برای اطمینان از پذیرفته شدن درخواست و اتصال آن با اکانت شخصی خودمان، کلید API را هم داخل پارامترها قرار دادیم.

نکته: die-zeit یکی از منابع خبری معتبر کشور آلمان است.

مثال سوم: ردگیری ایستگاه فضایی بین المللی با استفاده از API

در این مثال، روش تشخیص مکان صحیح «ایستگاه فضایی بین المللی» (International Space Station | ISS) را با استفاده از API بررسی کرده‌ایم. سپس موقعیت دقیق این ایستگاه را بر روی نقشه نمایش دادیم.

در این بخش از مطلب، برای ساخت API با پایتون از کتابخانه‌ urllib.request  استفاده می‌کنیم.

در فهرست زیر، ماژول‌های اصلی مورد استفاده در این مثال را معرفی کرده‌ایم.

  • ماژول json: ماژول json در پایتون یکی از ماژول‌های «درونی» (Built-In) است. این ماژول برای کارکردن با فایل‌های JSON به کار برده می‌‌شود.
  • ماژول turtle: از کتابخانه turtle در پایتون برای ساخت تصاویر و اشکال گرافیکی استفاده می‌شود.
  • ماژول urllib.request: این ماژول برای واکشی URL-های مختلف در پایتون به کار برده می‌شود.
  • ماژول time: ماژول time در پایتون برای مدیریت عملیات مربوط به زمان استفاده می‌‌شود.
  • ماژول webbrowser: از ماژول webbrowser  در پایتون استفاده می‌کنیم تا URL-های مختلف را در مرورگرهای اینترنتی باز کنیم. در اینجا برای باز کردن فایل متنی نوشته با فرمت «.txt» از این ماژول استفاده کرده‌ایم.
  • ماژول geocoder: با کمک این ماژول، طول و عرض جغرافیایی را بدست می‌آوریم.

شروع کار با استفاده از کلید API

برای آموزش ساخت API با پایتون سعی کردیم که از مثال واقعی استفاده کنیم. یکی از مشکلات ردگیری ایستگاه فضایی بین‌المللی حرکت دائم و سریع آن است. این ایستگاه با سرعتی نزدیک به ۲۸۰۰۰ کیلومتر در ساعت حرکت می‌کند. در واقع در هر ۹۰ دقیقه یک بار به دور کره زمین می‌چرخد. به دلیل داشتن چنین سرعت بالایی معمولا پیدا کردن موقعیت دقیق آن مشکل است. برای حل این مشکل از API-ها کمک گرفته‌ایم.

تصویر مفهومی از مرکزیت API در میان عناصر کامپیوتری

API به عنوان کمک کننده میانی بین وب‌سایت و برنامه کار می‌کند. با کمک API تمام اطلاعات مربوط به زمان حال را بدست میاوریم. در این مسئله API‌ اطلاعات مربوط به مکان دقیق «ISS» در دور زمین را در هر لحظه به برنامه می‌دهد. از لینک زیر به عنوان لینک API اطلاعات فضانوردان استفاده می‌کنیم.

url = "http://api.open-notify.org/astros.json" 

دسترسی به داده‌ها

برای بازکردن URL بالا و دسترسی به API‌-های آن تابع urllib.request.urlopen()  را به کار می‌بریم. سپس با کمک تابع json.loads(.read())  داده‌های بدست آمده از URL را مطالعه می‌کنیم.

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

{"number": 10, "people": [{"craft": "ISS", "name": "Sergey Prokopyev"},
 {"craft": "ISS", "name": "Dmitry Petelin"},
 {"craft": "ISS", "name": "Frank Rubio"},
 {"craft": "Tiangong", "name": "Jing Haiping"}, 
{"craft": "Tiangong", "name": "Gui Haichow"},
 {"craft": "Tiangong", "name": "Zhu Yangzhu"},
 {"craft": "ISS", "name": "Jasmin Moghbeli"}, 
{"craft": "ISS", "name": "Andreas Mogensen"}, 
{"craft": "ISS", "name": "Satoshi Furukawa"}, 
{"craft": "ISS", "name": "Konstantin Borisov"}], "message": "success"}

ساخت فایل iss.txt برای ذخیره اطلاعات فضانوردان

در این قسمت با استفاده از تابع open()  فایلی به نام iss.txt  ایجاد می‌کنیم. در این فایل نام و تعداد فضانوردان را به عنوان داده می‌نویسیم.

محاسبه طول و عرض جغرافیایی کاربر

در این بخش از مطلب، از تابع geocoder.ip(‘me’)  استفاده کرده‌ایم. با کمک این تابع می‌توانیم موقعیت دقیق خودمان را به صورت طول و عرض جغرافیایی بدست بیاوریم. سپس از تابع write()  برای نوشتن اطلاعات در فایل استفاده کرده‌ایم. در نهایت هم فایل را با استفاده از تابع file.close()  می‌بندیم.

راه‌اندازی نقشه جهان و آیکونی برای ISS

برای نمایش نقشه کره زمین از کتابخانه turtle  در پایتون استفاده می‌کنیم. مراحل انجام این کار را در فهرست زیر نوشته‌ایم.

  1. با کمک تابع turtle.screen()  به صفحه نمایش دسترسی پیدا می‌کنیم.
  2. از تابع screen.setup()  استفاده می‌کنیم. این تابع برای تنظیم اندازه و موقعیت پنجره خروجی به کار برده می‌‌شود.
  3. باید مختصات تمام ۴ گوشه صفحه نمایش را بر روی محور‌های «X» و «Y» تنظیم کنیم. برای انجام این کار تابع screen.setworldcoordinates()  را به کار می‌بریم.

مرحله بعدی تاثیر بسیار زیادی دارد. زیرا وقتی که ایستگاه فضایی بین المللی از یک سمت تصویر به انتهای سمت دیگر تصویر حرکت کرد، باید دوباره حرکت خود را از آن طرف تصویر شروع کند.

دست‌های یک برنامه نویس بر روی کیبورد نورانی و در مقابل مانیتور در حال کار

در فهرست زیر، تمام کارهای اجام شده در کدهای پایین را توضیح داده‌ایم.

  1. با استفاده از تابع screen.bgpic()  نقشه را به عنوان عکس پس‌زمینه صفحه قرار می‌دهیم.
  2. با استفاده از تابع screen.register_shape()  تصویر ایستگاه فضایی را به شکل turtle  تنظیم می‌کنیم.
  3. برای نمایش ایستگاه فضایی با کمک کد turtle.Turtle() یک شیء – با قابلیت حرکت بر روی صفحه – ایجاد می‌کنیم.
  4. سپس با کمک تابع iss.shape()  تصویر در نظر گرفته شده iss.gif را به عنوان شکل این شیء اختصاص می‌دهیم.
  5. بعد از آن با استفاده از تابع iss.setheading()  زاویه شیء را تنظیم می‌کنیم.
  6. تابع iss.penup()  به معنای آن است که این شیء در حین حرکت هیچ خطی بر روی صفحه نمایش رسم نمی‌کند.

نکته: می‌توانید تصاویر مربوط به نقشه و آیکون کوچک ایستگاه فضایی را از لینک (+) دانلود کنید.

برای دسترسی به موقعیت صحیح ISS باید از API زیر استفاده کنیم.

url = "http://api.open-notify.org/iss-now.json"

دسترسی به موقعیت دقیق ISS با استفاده از API

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

در کدهای پایین، موقعیت قرارگیری ISS را هر 5 ثانیه یک بار به‌روزرسانی می‌کنیم. برای این کار، هر بار دوباره طول و عرض جغرافیایی ISS را از API می‌گیریم.

ساختار یکپارچه و کامل کدها را در کادر زیر قرار داده‌ایم.

بعد از اجرای صحیح کدهای بالا، خروجی چیزی شبیه به تصویر پایین خواهد شد.

تصویر نقشه کره زمین و یک آیکون ماهواره کوچک برای نمایش محل ایستگاه فضایی بین‌المللی

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

یادگیری پایتون با کمک فیلم های پروژه محور فرادرس

پایتون یکی از پرطرفدارترین زبان‌های برنامه نویسی در دنیاست. این زبان در حوزه‌هایی مانند توسعه نرم‌افزار، هوش مصنوعی، امنیت سایبری و بسیاری زمینه‌های دیگر کاربرد دارد. همین کاربرد گسترده باعث شده است که افراد زیادی به یادگیری پایتون علاقه‌مند شوند. یکی از منابع معتبر و حرفه‌ای برای یادگیری این زبان، وب‌سایت فرادرس است. فرادرس، فیلم‌های متنوعی برای آموزش پایتون ارائه کرده است. این فیلم‌های آموزشی اغلب با رویکرد پروژه‌محور طراحی شده‌اند تا فرایند یادگیری مؤثرتر و کاربردی‌تر باشد. پس دانشجویان می‌توانند مهارت‌های خود را در عمل تقویت کنند.

در پایین، چند مورد از فیلم‌‌های آموزشی پروژه‌محور زبان پایتون را معرفی کرده‌ایم.

در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی، هدایت شده و از فیلم‌های پروژه‌محور بیشتری دیدن کنید.

مجموعه آموزش پروژه محور برنامه نویسی پایتون (Python)
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش پروژه محور برنامه نویسی پایتون هدایت شوید.

جمع‌بندی

برای ساخت API با پایتون روش‌های مختلفی وجود دارند. در این مطلب از مجله فرادرس، ۴ روش مجزا را بررسی کرده‌ایم. برای هر کدام‌ از این روش‌ها مثال‌های مناسبی را نیز بررسی کرده‌ایم. اگر به دنبال روشی ساده و مناسب برای افراد تازه‌کار هستید از فلسک استفاده کنید. اگر به دنبال ساخت مستندات API به صورت خودکار و با سرعت بالا هستید، می‌توانید از فریم‌ورک FastAPI استفاده کنید. اگر به ابزارهای قدرتمند و ویژگی‌های بسیار بیشتری نیاز دارید، می‌‌توانید از Django Rest Framework یا DRF استفاده کنید. برای درک اصول پایه API هم می‌توانید بدون استفاده از فریم‌ورک‌های تخصصی و با کمک کتابخانه‌هایی مانند requests  این کار را انجام بدهید.

همچنین یاد گرفتیم که چگونه از API-های واقعی – مانند NewsAPI و موقعیت‌یاب ایستگاه فضایی – استفاده کنیم، داده‌های JSON را بخوانیم و وضعیت درخواست‌ها را بررسی کنیم. هر برنامه‌ نویس حرفه‌ای پایتون، مخصوصا افرادی که به دنبال توسعه‌ اپلیکیشن‌های تحت وب هستند، لازم است که توانایی ساخت API با پایتون را داشته باشد.

source

توسط expressjs.ir