API مخفف کلمه ( Application Programming Interface ) به معنی رابط برنامه نویسی می باشد. APIها رابط بین نرم افزار های مختلف با هم هستند. در این مطلب به آموزش API، معرفی کامل API و روش استفاده از آن به همراه مثال های کاربردی و ویدیو آموزشی پرداختهایم.
اگر فقط کمی با توسعهی تحت وب آشنا باشید، حتماً این واژه به گوشتان خورده است: API. هم تازهکارها و هم حرفهایهای این صنعت از این واژه استفاده میکنند.
“چرا باید یک API Call داشته باشم؟ چطور؟”
“با یک API شخص سوم به راحتی میتوانیم مشکل را حل کنیم.”
“برایتان یک RESTful API میسازیم. به شما اطمینان میدهیم که سیستم جدید به خوبی در کنار سایر سرویسها کار میکند.”
شاید APIها برایتان ترسناک باشند، اما زندگیتان را به عنوان یک برنامهنویس از اینرو به آنرو میکنند
چرا؟ خُب، چون اگر بتوانید از APIها به خوبی استفاده کنید، فرایندِ تولیدِ نرمافزارِ سادهتر، سریعتر و بهتری دارید. ساخت و استفاده از APIها هم برای شما هم برای کلاینتتان مفید است.
حتماً به عنوان یک برنامهنویس، توصیهی “دوباره چرخ را اختراع نکن” را شنیدهاید.
APIها به کمکتان میآیند و لازم نیست دوباره چرخ را اختراع کنید. داشتن درکی اولیه از API یکی از مهارتهای حیاتی در توسعهی تحت وب است. امروز میخواهیم در این آموزش API با هم دربارهی APIها بیشتر یاد بگیریم.
مزایای API: چرا باید از API استفاده کنیم؟
قبل از اینکه به تعریف APIها بپردازیم، بهتر است ببینیم که چرا باید از آنها استفاده کنیم.
استفاده از API فرایند توسعه را بسیار بهتر میکند
- به شما این امکان را میدهد که از منطق یا قسمتهای از پیش آماده استفاده کنید و مجدد خودتان کد ننویسید. بعضی چیزها هم هستند که خودتان بهتنهایی نمیتوانید کدهایشان را بنویسید! پس به عنوان یک برنامهنویس و برای صرفهجویی در وقت، ضروری است که بدانید APIها چه هستند و چگونه کار میکنند.
- مطمئن باشید شخصی دیگر قبلا، بسیاری از مشکلاتی را، که در کدتان با آنها مواجه میشوید، حل کرده است. برای استفاده از این راهکارهای موجود (FaaS، کتابخانهها، وب سرویسها، SDK، Content APIها و …) به یک API نیاز دارید.
APIها چه هستند؟
تعریف رسمی:
تعریف آکادمیک بالا کمی پیچیده بود؟ تعریف زیر شاید بهتر کمکتان کند.
تعریف خانگی:
به زبان ساده، API واسطی برایتان فراهم میکند تا از منطق آن استفاده کنید. برای استفاده از آن نیز لازم نیست که جزئیاتِ چگونه عمل کردن این منطق را بدانید. تا زمانی که در سطحِ برنامهنویسیِ (نه گرافیکی) چیزی هستید، میتوانید از این تعریف برای هر زبان، پروتکل یا محیطی استفاده کنید.
برای اینکه بهتر APIها را متوجه شوید، مواردی را، که API نیستند، در زیر برایتان لیست میکنیم:
- یک API لزوماً یک دستگاه خارجی نیست. مثلاً، میتوانید مستقیما از کتابخانهها در برنامهتان استفاده کنید یا از APIها برای دسترسی به آنها کمک بگیرید.
- API فقط یک واسط است. یک API دارای تعریفات/فرمت و پیادهسازی است.
- API یک GUI (واسط گرافیکی کاربر) نیست. API تعاملاتی در سطح گرافیکی ندارد. APIها، چه با استفاده از یک زبان یا پروتکل ارتباطی، تنها در لایهی برنامهنویسی عمل میکند.
- API یک وبهوک (Webhook) نیست.
دورههای مرتبط در دانشیار آی تی
انواع مختلف API
همهی APIها به صورت مشابه ساخته نشدهاند.
با اینکه هدف همهی APIها یکی است، اما روشهای رسیدن به این اهداف در APIهای مختلف متفاوت است. چون میخواهیم تنها معرفی سادهای از APIها داشته باشیم، وارد جزئیات نمیشویم. فقط به خاطر داشته باشید که APIها با رویکردهایِ مختلفی ساخته میشوند.
Endpointها
هدف APIها این است که کار شما را در برنامهنویسی آسانتر کنند. اما یک API چگونه این کار را انجام میدهد؟
یک API قابلیتها/توابع را در کنار هم قرار میدهد و شما میتوانید با استفاده از Endpointها به آنها دسترسی پیدا کنید (معمولاً URLهایی ارائه میشوند، که برای ارتباط با API باید از آنها استفاده کنید).
این Endpointها تنها روش ارتباط با یک API هستند. هر Endpoint برای درخواست و پاسخ فرمتهای مشخصی دارد، که میتوانید آنها را در اسناد مربوط به API پیدا کنید.
Endpointها میتوانند دارای توابعی ساده باشند یا توابعی پیچیده داشته باشند که APIهای دیگری را فراخوانی میکنند. نقطهی کلیدی در اینجا این است که منطق پایهی این توابع از دید شما پنهان است. برای استفاده از آنها لازم نیست چیزی از چگونگی عملکرد آنها بدانید. برای Consume کردن، یا به عبارتی استفاده از قسمتهای مختلف آنها در اپلیکیشنتان، فقط کافی است که فرمت مناسب آنها را بلد باشید.
خلاصه اینکه، یک API شبیه واسطهای دیگر است: مثل کلید برق، که لامپ را روشن میکند. اینکه شما اطلاعاتی دربارهی جریان برق داشته باشید یا خیر، فرقی در کلیت موضوع ندارد.
پیشنهاد میکنیم مقاله رایگان آموزش Restful API را نیز بخوانید.
چگونه از API استفاده کنیم: مثالهایی عملی
خواندن و فهمیدن اسناد یک API
نمیخواهیم خیلی دربارهی موارد مفهومی در این قسمت صحبت کنیم. فقط با هم یک API ساده را بررسی میکنیم تا بتوانیم به مراحل بعدی بپردازیم. میخواهیم JavaScript Math Object را بررسی کنیم (میتوانید سند آن را در اینجا ببینید).
در اسناد میبینید که فرمت ورودیهای یک تابع (عدد، آرایهای از اعداد، و …) و فرمت خروجی آن مشخص شده است. اما دقت کنید که حرفی دربارهی منطقِ اجراکنندهی این توابع عنوان نشده است.
مثلا اگر Math.sqrt را در کنسول تایپ کنید (بدون اجرا کردن تابع)، ƒ sqrt() { [native code] } را به عنوان خروجی دریافت میکنید. ماهیت یک API به این صورت است. فرقی نمیکند API یک سیستمعامل یا وب را فراخوانی کنید، اصول تغییری نمیکنند.
در صورتی درباره API وب چیزی نمیدانید:
پیشنهاد میکنیم مطلب آموزش Web API بکاند با C# – رایگان و گام به گام را مشاهده نمایید.
مثالهایی پایه از موارد استفادهی API
میتوانید با استفاده از محصولات عرضهکنندگان معروف API، کارهای زیادی انجام دهید. مثلا Google Maps API را در نظر بگیرید. اغلب از دادههای Real-time Mapping یا Traffic Signals برای داشتن تجربهی کاربری بهتر استفاده میشود. مثالی دیگر، Twitter API است که میتوان با استفاده از آن توئیتهای خاصی را فیلتر کرد و نمایش داد.
حالا به APIهای وب میپردازیم و موارد استفادهی خاص آنها را عنوان میکنیم. توجه کنید که از Postman در مثالهایمان استفاده خواهیم کرد. اگرچه این Rest Client محدود به محیط وب است، اما میتوانید ابزارهای اینچنینی را برای محیطهای دیگر نیز پیدا کنید. بد نیست که قبل از شروع به کار، کمی دربارهی ابزارهای موجود در محیط موردنظرتان تحقیق کنید.
استفاده از یک Public API برای Fetch (واکشی) داده
مثال اول ساده، ولی جذاب است.
اولین APIای که از آن استفاده میکنیم، Dog API نامیده میشود. APIای جذاب که نیازی به احراز هویت ندارد. بهعلاوه، یک HTTP REST API و تحت وب است. چون این API مختص محیط وب است، لازم است که برخی پروتکلها را رعایت کنیم: در این مثال یعنی HTTP Verbها (GET, PUT, POST, DELETE, …). نمیخواهیم مثالی سخت داشته باشیم و فقط از متد GET استفاده میکنیم. بهعلاوه، این API تنها از همین متد پشتیبانی میکند. بیشتر Pubic APIها فقط به شما اجازهی استفاده از دادهها را میدهند و نمیگذارند چیزی بفرستید. به عبارت دیگر، فقط امکان استفاده از متد GET را دارید.
بیایید Postman را اجرا و واسط کاربریاش را ببینیم.
UI شکل بالا از تِم Dark استفاده میکند و شاید با UI شما کمی فرق داشته باشد.
چیزهای زیادی را باید در اینجا یاد بگیرید، پس اول با VERB و URL شروع میکنیم. متد (Verb) پیشفرض GET است، پس لازم نیست تغییری اعمال کنید. URL زیر را وارد کنید:
https://dog.ceo/api/breeds/list/all
“Send” را بزنید. باید پاسخی را دریافت کنید که دادههای مناسب را در خود دارد. اولین فراخوانی APIتان را انجام دادید. در این مثال از دادههای دریافتی استفادهای نمیکنیم. اما ایدهی کلی را متوجه شدید: میتوانید نژادهای مختلف سگ را به کاربرتان نشان و با کلیک روی نژاد، عکسی از آن را نیز نمایش دهید.
برای آشنا شدن با محیط، مسیرهای مختلف را امتحان کنید.
مدیریت احراز هویت با استفاده از Private API
حالا باید درک بهتری از API داشته باشید، اینکه چطور قسمتهای مختلف در کنار هم کار میکنند. در ادامه آموزشی پیچیدهتر داریم که از احراز هویت استفاده میکند. از این API استفاده میکنیم.
می توانید Postman را ببندید، اما یادتان باشد که برای شروع به کار با API، ابزار بسیار مناسبی است.
هدف این است که با استفاده از ابزار CLI، کدهای تخفیف یکبار مصرف برای خریداران بسازیم. API این کدهای تخفیف را میسازد و همهی این کارها در کامپیوتر خودتان انجام میشوند.
پوشهای جدید برای این پروژه بسازید. از npm init در پوشه استفاده کنید و برنامهی ویرایشگر متن خود را باز کنید. حالا یک فایل index.js بسازید و فایل package.json را باز کنید. در بالاترین شئ آن، کد زیر را وارد کنید:
"bin": { "discounts": "./index.js" }
به پکیج Commander برای پارس کردن دادههای کلاینت نیاز داریم. npm install –save commander را در پوشهی جاری اجرا کنید. از کتابخانهای کوچک برای ساخت ID استفاده میکنیم. با کد npm install –save shortid میتوانید آن را نصب کنید. با استفاده از کد npm install –save request کتابخانهی دیگری را هم برای مدیریت سادهتر فراخوانیهای HTTP نصب میکنیم. به فایل index.js بروید و کد زیر را در آن پیست کنید:
#!/usr/bin/env node var program = require('commander'); var shortid = require('shortid'); var request = require('request'); function CreateDiscount(){ var discount = { name: '20% OFF', trigger: 'Code', type: 'Rate', rate: 20, maxNumberOfUsages: 1, code: shortid.generate() } request({ url: "http://app.snipcart.com/api/discounts", auth: { 'user': 'YOUR_API_KEY' }, method: "POST", json: true, body: discount }, function (error, response, body){ console.log(body.code); }); } program .arguments('') .action(function(number) { for(var i = parseFloat(number); i > 0; i--){ CreateDiscount(); } }) .parse(process.argv);
می خواهیم فقط روی تابع request متمرکز شویم. این تابع جایی است که در آن API را فراخوانی میکنیم. میبینید که method: “POST” را به متد میدهیم. دلیل آن این است که میخواهیم به این API داده بفرستیم. با مشخص کردن این متد، API میتواند این عمل را به خوبی Map کند و بدنهی درخواست را، که شامل دادههای تخفیف است، بخواند.
یکی از قابلیتهای جذاب API احراز هویت است، که هنوز از آن استفاده نکردهایم. در مثال قبلی Public API داشتیم که نیازی به احراز هویت نداشت. اما در عمل، بیشتر APIهایی که با آنها سروکار دارید، احراز هویت میخواهند، مثلاً APIهای Twitter یا Google Maps. این “الگویی” استاندارد در دنیای APIهاست.
مفهوم احراز هویت ممکن است کمی دردساز باشد.
در این مثال، API Key را مستقیماً در درخواست ارسال میکنیم و سرور ما را میشناسد. بعد از آن میتواند درخواست را در محدودهی اکانتمان مدیریت کند.
اگر میخواهید اپلیکیشن را امتحان کنید، npm install -g را در پوشهی نصب اجرا کنید. برای ساخت xتا کد تخفیف، کد discounts x را اجرا کنید. اگر میخواستیم خودمان در UI، ۲۰۰ کد تخفیف بسازیم، بسیار وقتگیر میشد. اما میبینید که با API این کار در چند دقیقه انجام میشود. علاوه بر آن میتوانید از کد مجدداً استفاده کنید. اگر یک ماه بعد لازم بود دوباره چنین کاری را انجام دهید، کدتان آماده است.
حرفهای پایانی
امیدواریم با خواندن آموزش API کمی بیشتر APIها را شناخته باشید و بتوانید از آنها در پروژههایتان استفاده کنید.
چند نکته:
- APIها سرعت توسعه را بیشتر میکنند و حوزهی کارتان را گسترش میدهند. از آنها استفاده کنید!
- APIها تنها محدود به وب نیستند، آنها را همهجا میبینید.
- همیشه چندبار اسناد API موردنظرتان را بررسی کنید.
- همیشه پیش از کد نویسی، ابزار موجود در حوزهی خودتان را (API یا موارد دیگر) بررسی کنید.
مثال آخر، در حد یک “محصول نهایی” نبود، اما میتوانید به خوبی در آن ببینید که استفاده از API به صورت عملی چگونه است. خیلی کارهای دیگر هم میتوانستیم در آن مثال انجام دهیم، مثلاً میتوانستیم به کاربر اجازه دهیم نوع تخفیف را انتخاب کند. میتوانستیم مستقیماً و در همان تابع، کدهای ساختهشده را برایشان از طریق ایمیل ارسال کنیم. اگر هم درخواستهایی پیشرفته از ابزارهای تخفیف داشتیم، میتوانستیم API مختص خودمان را بنویسیم. حتی میتوانستیم UIای بسازیم که از طریق آن بتوان با APIمان تعامل داشت.
خُب گام بعدی چیست؟ مثل هر چیز دیگری در دنیای برنامهنویسی، باید کد بنویسید. تمرین، تمرین، تمرین و باز هم تمرین. اینطور میتوانید با مدیریت و استفاده از APIها آشنا شوید. پس از تمرین بسیار، در استفاده از آنها حرفهای میشوید.
و بعد لذت واقعی را تجربه میکنید.
فیلم آموزش API:
در صورتی که آموزش API برای شما مفید بوده است:
پیشنهاد میکنیم دورههای آنلاین آموزش API را مشاهده نمایید.