زمانی که کارمندان واحد پشتیبانی مشتریان در شرکتهای فناوریمحور، بخواهند به یکی از مشتریان توضیح دهند که چرا امکان دسترسی به یک داده خاص وجود ندارد، معمولاً میگویند که دسترسی به این داده خاص از طریق APIها امکانپذیر نیست.
برخی از افراد تصور میکنند که API مانند درگاه USB است و با اتصال به آن درگاه، ما به همه اطلاعات موجود در یک برنامه دیگر دسترسی خواهیم داشت. ولی این تصور، اشتباه است.
APIها بیشتر از آنکه شبیه پورتهای USB باشند، شبیه پیشخدمتهای رستوران هستند. یک API، تمام اطلاعات یا کدهای یک برنامه را در دسترس شما قرار نخواهد داد، زیرا این امر ممکن است منجر به آن شود تا کدهای برنامه کپی شده و در جای دیگری استفاده شود! در عوض، APIها دادههایی را که توسعهدهندگان آن در دسترس کاربران بیرونی قرار دادهاند، به شما ارائه میدهند. در این حالت نیز، به منظور دسترسی به این دادهها و پردازش آنها، باید زبان برنامهنویسی مرتبط با API را بدانید و درخواستهای مناسب و صحیحی را مطرح کنید.
چرا باید از API استفاده کنید
رایانهها، بسیاری از وظایف و فعالیتها، مخصوصاً فعالیتهای مرتبط با جمعآوری و مرتبسازی دادهها را آسانتر میسازند. برای مثال، فرض کنید میخواهید بدانید که شریک تجاری شما، چند صورتحساب برایتان ارسال کرده است. برای انجام این کار، شما به راحتی میتوانید به سیستم نگهداری صورتحسابهای خود مراجعه نموده و هر یک از صورتحسابها را جداگانه پرینت نمایید.
از سوی دیگر، اگر همه صورتحسابها در یک پایگاه داده مرکزی بارگذاری شده باشند، میتوانید با یک برنامهنویسی ساده به آن پایگاه داده دسترسی پیدا کنید و همه موارد مربوط به نام شریک تجاری خود را بیابید. با انجام این کار، زمان کمتری را صرف خواهید نمود و دقت عملیات نیز بسیار بالاتر است.
معماری API
API ها از سه قسمت تشکیل شدهاند:
- کاربر: شخصی که درخواست میکند
- کلاینت: رایانهای که درخواست را به سرور ارسال میکند
- سرور: رایانهای که به درخواست پاسخ میدهد
در ابتدا یک شخص، سروری جهت ثبت و نگهداری دادهها، ایجاد میکند. با راهاندازی سرور، برنامهنویسان اسناد و مدارکی را شامل Endpointهایی که در آنها داده خاصی یافت میشود، منتشر مینمایند. این اسناد، ساختار داده در سرور را در اختیار برنامهنویسان بیرونی قرار میدهد. سپس یک کاربر بیرونی میتواند دادههای موجود در سرور را درخواست کند (یا آنها را جستجو کند)، یا برنامهای بسازد که در پایگاه داده جستجو کرده و آن اطلاعات را به قالبی متفاوت و قابل استفاده تبدیل نماید.
این موضوع گیجکننده است، اجازه دهید آن را در قالب یک مثال واقعی توضیح دهیم: دفترچه تلفن!
در عصر آنالوگ! شما یک نسخه از دفترچه تلفنی دریافت میکردید که لیست تمامی افراد ساکن شهر شما، براساس نام و آدرس و به ترتیب حروف الفبا، در آن ذکر شده بود. اگر آدرس دوست خود را لازم داشتید، میتوانستید نام او را جستجو کنید، آدرس او را پیدا کنید و خیابانی که او در آن ساکن است را بر روی نقشه ضمیمه دفترچه بیابید. علیرغم آنکه در این مثال، حجم اطلاعات مورد نیاز اندک است، ولی دستیابی به آن زمان زیادی لازم داشت. اکنون، به لطف وجود تکنولوژی، تمام این اطلاعات را میتوان در یک پایگاه داده پیدا کرد.
بیایید یک پایگاه داده برای یک شهر فرضی به نام Happyville ایجاد کنیم. افراد در Happyville_WP تصمیم گرفتند که وقتی پایگاه داده خود را ایجاد میکنند، چند دسته اطلاعات با دادههای تو در تو ایجاد کنند. این موارد، endpointهای ما هستند و شامل تمام اطلاعاتی میشوند که API برای یک برنامه بیرونی منتشر مینماید.
موارد زیر، endpointهای موجود در اسناد Happyville_WP هستند:
- اسامی افراد
- نام/ نام خانوادگی
- آدرس ها
- آدرس محل سکونت / آدرس ایمیل
- شماره تماس
- شماره تماس خانه/ شماره تلفن همراه
بدیهی است که موارد مذکور، شامل همه اطلاعاتی که میتوان درباره یک شخص جمعآوری کرد، نخواهند بود. حتی اگر Happyville_WP اطلاعات خصوصی بیشتری درباره ساکنان Happyville (مانند تاریخ تولد و شمارههای تأمین اجتماعی) جمعآوری کند، برنامهنویسان بیرونی نمیتوانند بدون دانستن زبان endpointها، به آن اطلاعات دسترسی پیدا کنند.
این endpointها زبان لازم برای درخواست اطلاعات از پایگاه داده را در اختیار شما قرار میدهند. اگر لیستی از همه افراد در Happyville با نام خانوادگی اسمیت بخواهید، میتوانید یکی از این دو کار را انجام دهید:
- در مرورگر خود برای کسب آن اطلاعات، از طریق یک URL درخواست خود را ارسال نمایید. در این حالت، از مرورگر اینترنت شما به عنوان کلاینت استفاده شده و در ادامه یک فایل متنیِ زبان برنامهنویسی دریافت خواهید کرد. این URL ممکن است چیزی شبیه به URL زیر باشد:
http://api.happyville_wp.com/names؟last_name=smith
- از برنامهای استفاده کنید که اطلاعات را درخواست کرده و آنها را به شکل قابل استفاده تبدیل نماید. در این حالت، شما میتوانید برنامه را خودتان بنویسید یا از یک کلاینت HTTP آماده استفاده نمایید.
اولین گزینه، مناسب درخواستهای سادهای است که پاسخهای محدودی خواهند داشت (به عنوان مثال، همه افراد در Happyville با نام خانوادگی Xarlax ). گزینه دوم به تسلط بیشتری بر کدنویسی نیاز دارد، اما برای برنامهنویسانی که میخواهند از پایگاه داده برنامه دیگری برای بهبود اپلیکیشنهای خود استفاده نمایند، بسیار مناسب است.
بسیاری از شرکتها، از APIهای باز شرکتهای بزرگتر مانند Google و Facebook، به منظور دسترسی به دادههای دیگری که از طریق سایر روشها قابل دسترسی نیستند، استفاده میکنند. در این حالت، APIها میتواند موانع ورود شرکتهای کوچکتر به بازار را کاهش دهند. اگر این APIها وجود نداشتند، شرکتهای کوچکتر میبایست، خودشان دادههای مورد نیاز را خلق و نگهداری نمایند.
اقداماتی که میتوانید از طریق یک API انجام دهید
میتوان گفت یک API زبان مکالمه دو کامپیوتر با یکدیگر است. سرور، دادهها را در اختیار دارد و زبان را تنظیم میکند، در حالی که کلاینت از این زبان برای درخواست اطلاعات از سرور استفاده مینماید. APIها میتوانند هر کاری را انجام دهند!
زبان و قواعد نحوی APIها، توانایی آنها را محدود میسازد. در نتیجه، یک API به طور کل میتواند چهار اقدام را انجام دهد:
- GET: در این حالت، کلاینت دادهها را از سرور درخواست میکند – این دادهها ممکن است، Status و یا یک داده خاص، مانند نام خانوادگی، باشد.
- POST: در این حالت، تغییرات توسط کلاینت در سرور ایجاد میشود. به این معنی که اطلاعاتی به سرور اضافه میگردد: مانند یک ورودی اطلاعات جدید
- PUT: در این حالت، اطلاعاتی توسط کلاینت در سرور اضافه شده و یا آن اطلاعات اصلاح میشوند.
- DELETE: در این حالت، اطلاعات موجود در پایگاه داده حذف میشوند.
هنگامی که endpointها را با این اقدامات ترکیب میکنید، میتوانید از طریق APIها، اطلاعات موجود در سرور را جستجو نموده و یا بهروزرسانی نمایید. با توجه به متفاوت بودن نحوه کدنویسی APIها، به منظور انجام این اقدامات باید به مستندات مرتبط با آن APIی که قصد فراخوانی آن را دارید، مراجعه نمایید.
با توجه به صحبت درباره زبان و قواعد نحوی، بهتر است تا درباره نحوه ارائه درخواست به یک سرور نیز صحبت شود. برای انجام این کار، حداقل دو روش متداول زیر وجود دارد:
HTTP: شما با وارد کردن یک URL در نوار جستجو مرورگر خود، وارد سایت ما شدید. این روش، روشی آسان برای دسترسی به دادهها است، اما اگر اطلاعات زیادی درخواست کنید، نتیجه مطلوبی از این روش دریافت نخواهید کرد.
قالبهای متنی: XML ، JSON. این زبانها، زبانهای اصلی دسترسی به دادهها از طریق API هستند. زمانی که دادههای خود را دریافت میکنید، باید کدهای XML یا JSON را مرور نمایید تا بفهمید سرور چه اطلاعاتی به شما داده است.
چگونه می توان از API استفاده کرد؟
- یک API Key دریافت کنید
- endpointهای API را تست کنید
- اولین اپلیکیشن خود را ایجاد کنید
اکنون می توانیم همه آنچه را که با هم آموختهایم جمعبندی نموده و یک راهنمای گام به گام در مورد نحوه استفاده از API ایجاد کنیم.
-
یک API Key دریافت کنید
API Key رشته منحصربهفردی از حروف و اعداد است. شما باید یک کلید API به هر درخواست اضافه کنید تا API بتواند شما را شناسایی کند. برای دریافت کلید API، باید در سرور API ثبتنام کرده و اطلاعات هویتی خود را وارد کنید. برای مثال در RapidAPI – میتوانید روش ثبت نامی را که برای شما مناسب باشد انتخاب کنید. روش ثبتنام میتواند شامل یک نام کاربری، ایمیل، رمز عبور، حساب Google ، Facebook یا Github باشد.
-
endpoint API را تست کنید
پس از دریافت کلید API، میتوانیم به API endpoint مراجعه کنیم (طبق قوانین موجود در اسناد) تا بررسی کنیم که آیا همه کارها مطابق انتظار ما انجام میشوند یا خیر. برای این کار، ما میتوانیم از یک کلاینت REST، مانند Postman استفاده کنیم. در مورد RapidAPI ، این کار بسیار سادهتر است. بلافاصله پس از ثبتنام در سرویس RapidAPI، میتوانیم به بخش API مورد علاقه خود برویم، در صورت لزوم در آن ثبتنام نماییم و سپس دادههای لازم را مستقیماً در صفحه API وارد کرده و پاسخ endpoint را مشاهده کنیم.
-
اولین اپلیکیشن خود را ایجاد کنید
پس از بررسی endpoint و مطمئن شدن از اینکه همه چیز مطابق انتظار ما کار میکند، میتوانیم شروع به ایجاد اپلیکیشن خود نموده و APIها را فراخوانی نماییم.
نتیجه گیری
API برای دریافت اطلاعات خاصی از یک برنامه دیگر مفید است. اگر بدانید که چگونه اسناد را بخوانید و درخواستها را بنویسید، میتوانید دادههای بسیار خوبی را بدست آورید، اما تحلیل همه آنها ممکن است طاقتفرسا باشد. این همان جایی است که توسعهدهندگان وارد عمل میشوند. آنها میتوانند برنامههایی را بسازند که دادهها را مستقیماً در یک اپلیکیشن یا پنجره مرورگر با فرمتی قابل استفاده نمایش دهند.