API چیه؟ مخفف چه کلمهایه؟ آیا یه API مثل یه پورت USB است؟
این واژه بیشتر تو زمینه توسعه نرم افزار به گوش آدم میخوره ولی با این حساب خیلی از برنامه نویسان مبتدی هنوز با ماهیت این اصطلاح آشنا نیستند! برای همین هم من تو این پست قصد دارم که یه سری اطلاعات مفید برای کسایی که دنبال عملکرد و مزایای این تکنولوژی میگردن ارائه بدم.
در واقع API مخفف کلمه Application Programming Interface است پس لابد تو این فناوری به Interface توجه خاصی میشه. باید بگم که بله اصلاً این تکنولوژی داره رو پایه ارتباط میچرخه!
خب بهتره ببینیم که رابط برنامه نویسی اپلیکیشن چطوری کار میکنه و چه مزایایی به همراه داره؟
API چیست؟
همونطوری که گفتم API مخفف Application Programming Interface به معنی رابط برنامه نویسی اپلیکیشن است. لازمه بدونین که Interface یا رابط، مهمترین قسمت این اصطلاحه چون یه API با یه برنامه با شما صحبت میکنه تا بتونین با اون برنامه ارتباط برقرار کنین، پس لازمه که زبان اون رو بدونین و بدون دونستن API زیاد دووم نمیارین.
وقتی برنامه نویسان تصمیم میگیرین تا بعضی از داده های خودشون رو در دسترس عموم قرار بدن یه سری Endpoit هایی رو فاش میکنن و این کار به این معنیه که اونها بخشی از زبان رو که برای ساختن برنامهشون استفاده کردن، منتشر میکنن. بقیه برنامه نویسان میتونن با ساختن URL یا استفاده از سرویس گیرنده HTTP داده ها رو از اون نقاط پایانی درخواست کنن.
در واقع API قسمتی از کدهای نوشته شده به وسیله برنامه نویس است که به بقیه برنامهها اجازه میده بتونن به برنامه مورد نظرشون وصل بشن و با اون تعامل داشته باشن.
پس API یه رابط پیاده سازی نرم افزار است که به بقیه برنامهها اجازه میده باهاش رابطه داشته باشن.
چرا باید از API استفاده کنین؟
اکثر کارها با استفاده از کامپیوترها آسونتر شده، به خصوص کارهایی که شامل جمع آوری و مرتب سازی از طریق داده هاست. مثلاً شما میخواین بدونین شریک کسب و کارتون چندبار فاکتورهایی رو به شرکت شما ارسال کرده، میتونین خیلی راحت وارد پروندههای فاکتور شرکت بشین و “ورودی داده” رو اسکن کنین و هر فاکتور رو به صورت جداگونه برای خودتون چاپ کنین.
از طرف دیگه اگه همه فاکتورها تو یه پایگاه داده مرکزی بارگذاری بشن میتونین یه برنامه ساده بنویسین که به اون پایگاه داده دسترسی داشته باشه و همه نمونههای شریکتون رو براتون پیدا کنه! یه کار سریع و دقیق!!
پس میتونیم بگیم دلیل اصلی نیاز به API ارتباطات بین سیستمهاست!
معماری API به چه صورت است؟
Application Programming Interface از سه بخش تشکیل شده:
- کاربر: شخصی که درخواستی رو ارائه میده.
- گیرنده: رایانهای که درخواست رو به سرور ارسال میکنه.
- سرور: رایانهای که به درخواست پاسخ میده.
اول از همه یه نفر سرور رو ایجاد میکنه تا اون داده ها رو به دست بیاره و نگهداره. وقتی که این سرور درحال اجراست، برنامه نویسان اسناد رو منتشر میکنن، نقاط پایانی هم جز این اسناد هستند و شامل اطلاعات خاصی هستن. این مستندات به برنامه نویسان خارجی، درباره ساختار روی سرور اطلاعات میدن!
بعد از این، یه کاربر خارجی میتونه اون دیتا رو روی سرور جستجو کنه و یا یه برنامهای بسازه که جستجوها رو روی پایگاه داده انجام بده و اون اطلاعات رو به یه قالب متفاوت و قابل استفاده تبدیل کنه!
ممکنه یکم گیج کننده به نظر بیاد نه؟ بذارین از یه مثال واقعی استفاده کنیم:
بهتره یه چند سالی برگردیم عقب و به روزهایی برسیم که اسم و آدرس ملت رو توی ورقههای سفید دفتر تلفن به ترتیب حروف الفبا مینوشتیم! مثلاً شما به آدرس یکی از دوستاتون احتیاج دارین، میتونین اونها رو با نام خانوادگیشون جستجو کنین، آدرس رو پیدا کنین و سپس خیابون اونها رو از توی نقشههای قسمت پشتی برگه جستجو کنین. درسته که گفتنش راحت و لذت بخشه ولی این روش هم وقت گیر بود هم اطلاعات محدودی رو در اختیارمون میذاشت!
اما امروزه با جادوی تکنولوژی میتونیم خیلی راحت کلی اطلاعات از پایگاههای داده به دست بیاریم.
دونستن زبان Endpoints ضروریه!
فرض کنین شما یه شهر خیالی با اسم شهر شاد دارین و قراره با این روش براشون پایگاه داده درست کنین و یه سری اطلاعات شخصی و غیر شخصی افراد رو تو این پایگاه داده قرار بدین و چند دسته از اطلاعات رو با داده های تو در تو در زیرشاخه ایجاد کنین. این داده ها نقاط پایانی هستند و شامل همه اطلاعاتی میشن که API برای برنامه خارجی منتشر میکنه، به نقاط پایانی زیر نگاه کنین:
نام
- نام / نام خانوادگی
آدرسها
- آدرس محل زندگی / آدرس ایمیل
تلفن
- تلفن منزل / تلفن همراه
البته این همه اطلاعات نیست، فقط یه نمونه کوچیک برای شماست. این داده ها بدون دونستن زبان نقاط پایانی در دسترس برنامه نویس خارجی قرار نمیگیره. پس درواقع Endpoints یا نقاط پایانی زبان مخصوص درخواست اطلاعات از پایگاههای داده است.
حالا برای این که بتونین یه لیستی از افرادی که در شهر شاد نام خانوادگی “پارسا” دارن رو پیدا کنین، میشه یکی از دو راه زیر رو انتخاب کرد.
روش اول
برای اطلاعات مورد نظرتون یه درخواست URL در مرورگر انجام بدین. این کار از مرورگر اینترنت شما به عنوان گیرنده استفاده میکنه و شما یه سند متنی رو به زبان کد نویسی برمیگردونین. مثلاً ممکنه اون URL چیزی شبیه این باشه: http://api.shahreshad.com/names?last-name=parsa
روش دوم
از برنامههایی استفاده کنین که اطلاعات رو درخواست کنه و اونها رو به یه شکل قابل استفادهای ترجمه کنه. تو این روش میتونین برنامه خودتون رو کدگذاری کنین و یا از یه گیرنده HTTP آماده استفاده کنین.
مزایای هر روش
گزینه اول برای درخواستهای ساده که فقط چندتا پاسخ داره بسیار مناسبه مثلاً همه خانوادههای شهر شاد با اسم فامیلی پارسا که تعدادشون کمه! اما گزینه دوم نیاز به تسلط بیشتری تو کد نویسی داره و برای برنامه نویسانی که قصد دارن از بانک اطلاعاتی یه برنامه دیگه برای تقویت اپلیکیشنهای خودشون استفاده کنن خیلی خوبه!
خیلی از شرکتها از API های باز شرکتهای بزرگتری مثل گوگل و فیسبوک برای دسترسی به داده هایی استفاده میکنند که در غیر این صورت نمیتونن بهدستشون بیارن، چون تو این حالت API شرکت بزرگ موانعی که شرکت کوچیکتر برای رسیدن به اون داده ها داره رو به طرز چشمگیری کاهش میده.
کارهایی که از طریق API میتونین انجام بدین
خب پس تا اینجای کار خواستم بهتون بگم که API نحوه صحبت کردن دوتا کامپیوتر باهم دیگهست. سرور داده ها رو در اختیار داره و زبان رو تنظیم میکنه، در حالی که گیرنده از اون زبان استفاده میکنه تا سوالاتی رو از سرور بپرسه.
چهارتا اقدام وجود داره که یه API میتونه انجام بده:
GET
داده ها رو از سرور درخواست کنه که میتونه نوعی وضعیت یا ویژگیهای خاصی باشه مثل نام خانوادگی.
POST
ارسال تغییرات از گیرنده به سرور، این طوری بهش فکر کنین که یه سری اطلاعاتی رو به سرور اضافه میکنه مثل یه ورودی جدید!
DELETE
اطلاعات موجود رو حذف میکنه.
PUT
اطلاعات موجود رو مرور یا اضافه میکنه.
وقتی که نقاط پایانی رو با این اقدامات ترکیب میکنین، میتونین اطلاعات موجود رو از طریق API جستجو یا به روز کنین. برای اطلاع از نحوه کدگذاری این اقدامات لازمه که مستندات API رو بررسی کنین، چون که همه اونها شبیه هم نیستند.
راه های ارسال درخواست
حالا که داریم درمورد زبان حرف میزنیم بهتره درباره راههایی که به وسیله اونها میتونین یه درخواست رو پوشش بدین هم بحث کنیم:
HTTP
این همون روشیه که شما همون اول کار به سایت ما رسیدین (با تایپ کردن URL تو نوار جستجوی مرورگرتون). این یه راه خیلی راحت برای رسیدن به دادههاست اما اگه یه حجم زیادی از داده ها رو درخواست کنین، با یه فرمت خوب و خوشگلی به دست شما نمیرسه!
قالبهای متنی
XML و JSON زبانهای اصلی برای دسترسی به داده ها از طریق API هستند. وقتی که شما داده های خودتون رو دریافت میکنین، باید از طریق کد XML یا JSON بگردین تا متوجه بشین که سرور چه اطلاعاتی رو در اختیارتون گذاشته.
مزایای استفاده از API برای برنامه نویسان
- اتوماسیون: با API ها، به جای این که افراد کار رو مدیریت کنن، کامپیوتر کار رو مدیریت میکنه، پس آژانسها از این طریق میتونن جریان کاری رو به روز کنن تا سریعتر و موثرتر واقع بشن!
- کاربرد: از اونجایی که API ها میتونن به مولفههای برنامه دسترسی پیدا کنن، ارائه خدمات و اطلاعات انعطاف پذیرتره.
- دامنه بیشتر: با یه API میتونین یه لایه برنامه ایجاد کنین که میتونه برای توزیع اطلاعات و خدمات به مخاطبان جدیدی که برای تجربیات کاربر سفارشی، شخصی سازی میشن استفاده بشه.
- داده های جدید: API اجازه میده تا همه اطلاعات تولید شده در سطح دولت برای همه شهروندان و نه تنها تعداد محدودی، در دسترس باشه.
- کارآیی: هنگامی که دسترسی به یه API فراهم بشه، محتوای تولید شده میتونه به طور خودکار منتشر بشه و برای هر کانالی در دسترس باشه، پس این امکان رو بهتون میده که با سرعت و سهولت بیشتری اطلاعات رو به اشتراک بذارین و توزیعشون کنین.
- ادغام: API ها اجازه میدن محتوا از هر سایت یا برنامهای راحتتر در سایت مقصد جاسازی بشه و این امر تضمین بیشتری برای تحویل اطلاعات سیال و تجربه کاربری یکپارچه داره.
- شخصی سازی: از طریق API هر کاربر یا شرکتی میتونه محتوا و خدماتی رو که بیشترین استفاده رو دارن، شخصی سازی کنه.
- سازگاری: به مرور زمان نیاز به تغییر دارین و API ها به پیش بینی تغییرات کمک میکنن. هنگام کار با این فناوری، انتقال داده بهتر پشتیبانی میشه و اطلاعات دقیقتر برسی میشن.
به طور خلاصه API ها خدمات ارائه شده رو منعطفتر میکنن و انجام خیلی کارها با استفاده از اونها راحتتر میشه!
استفاده از API رو شروع کنین
خیلی از شما تو زندگی روزمره از API استفاده میکنن و اطلاعات رو از یه قسمت مشخص برنامه به قسمتهای مشابه منتقل میکنن. یه همچین کاری وقتی خیلی به درد میخوره که میخواین اطلاعاتی رو به اشتراک بذراین که اگه از این روش استفاده نکنین مجبورین هی اونها رو تکرار کنین، مثلاً اشتراک گذاری لیدها بین پلتفرم اتوماسیون بازاریابی و CRM تون.
موارد استفاده و نمونههایی که اینجا قراره لیست کنم، خیلی موارد پایهای هستند و دادهای کمتر از اون چیزی که API استاندارد شما برای اونها مناسبه، جمع میکنن ولی خب ایدههای خوبی در مورد مراحل روند API بهتون میدن.
روشهای استخراج داده های API
کلید API
اکثر Application Programming Interface به یه کلید API نیاز دارن، به محض این که یه API پیدا کنین میخواین باهاش سرگرم بشین و به اسناد اون برای رسیدن به درخواستها نگاه بیندازین. بیشتر API ها از شما میخوان که تایید هویت مثل ورود به سیستم با اکانت گوگل رو انجام بدین، شما یه رشته از حروف و اعداد منحصر بفردی رو برای دسترسی به API دریافت میکنین و دیگه لازم نیست هربار ایمیل و پسوردتون رو وارد کنین.
سرویس دهنده HTTP
سادهترین راه برای شروع کار با API پیدا کردن یه سرویس دهنده HTTP آنلاین است مثل Postman, Reset-Client یا Paw است. این ابزارهای آماده که اغلب هم رایگان هستند، بهتون کمک میکنن تا درخواستهای خودتون رو برای دسترسی به API های موجود با کلید API که دریافت کردین، ساختاردهی کنین! تو این قسمت به دانش کدنویسی کمی نیاز دارین.
ساختن URL
دومین راهی که برای استخراج داده از API وجود داره، ساختن یه URL از مستندات موجود در API است. به طور کلی یه درخواست API تفاوت چندانی با URL معمولی مرورگرها نداره، اما تو این مورد داده های برگشتی به روشی هستند که خوندنشون برای کامپیوترها کار سادهایه!
اینجا براتون اتفاقی رو شرح دادم که موقع درخواست اطلاعات آب و هوایی از یه پایگاه داده تو مرورگر وب من افتاده:
درخواست آب و هوای یه شهر خاص:
api.openweathermap.org/data/2.5/weather?q=city name
تو مرورگر تایپ کنین:
api.openweathermap.org/data/2.5/weather?q=Nashville,TN&APIID=numberslettersnumbersletters
پس در کل بدونین که …
API برای بیرون کشیدن اطلاعات خاص از یه برنامه دیگه مفیده. اگه میدونین که چطوری مستندات رو بخونین و درخواستها رو بنویسین، پس میتونین داده های خوبی رو به دست بیارین اما ممکنه تجزیه همهشون کار سخت و وقت گیری باشه. API ها میتونن وارد برنامهها بشن و اطلاعات رو تو قالبهایی که استفاده ازشون راحته نمایش بدن!