نکته: این قسمت از متن پیچیدگی خوانش و فهم مطالب را در بر دارد و نیازمند توجه و دقت بالای خواننده می باشد.
اگر بخواهیم از فلسفه کمک بگیریم میتوانیم از ابزار epistemology( معرفت شناسی یا شناخت شناسی ) استفاده کنیم. اپیستمولوژی در ساده ترین بیان، شاخه ای از فلسفه است که به مطالعه دانش و شناخت میپردازد و به برخی از سوالات پاسخ میدهد:
۱- دانش چیست؟ (دانش ما از API چیست؟)
۲- چگونه دانش به دست میآید؟ (چگونه دانش ما از API به دست میآید؟)
طبیعتاً افراد فعال و با تجربه در حوزه علوم نرم افزار کامپیتور و دانش زیرساخت سخت افزاری درک عمیق تری از واژه api به واسطه کاربرد آن در ابعاد مختلف دارند. اما چطور میتوان محدودیت های شناخت API را برای کاربران عام از میان برد؟ اپیستمولوژی ابزاری است که به ما کمک میکند تا ویژگی های فی نفسه موجود در هر API را بشناسیم تا بتوانیم به درک و تشخیص درستی از اینکه چه چیزی API هست و یا نیست، برسیم. این ویژگی ها به شرح ذیل است:
سرویس APIها به عنوان واسطههایی عمل میکنند که انتقال دانش بین سیستمها، برنامهها (اپلیکشن ها) یا اجزا مختلف را تسهیل میکنند. آنها پروتکلها و روشهای تبادل داده، اطلاعات و دستورات را تعریف میکنند و تضمین میکنند که دانش از یک سیستم به صورت مؤثر در سیستم دیگری استفاده شود. به عنوان مثال سرویس های ابری مانند Amazon Web Services از طریق API های خود به برنامه های مختلف امکان دسترسی به منابع محاسباتی و دخیره سازی ارائه میدهند. (منابع محاسباتی و ذخیرهسازی به مجموعهای از امکانات و خدمات ابری اشاره دارد که به کمک آنها، کاربران میتوانند از قدرت محاسباتی و فضای ذخیرهسازی موجود در اینترنت بهره ببرند، بدون این که نیاز به تجهیزات سختافزاری خود داشته باشند. به طور ساده، این منابع شامل سرورهای مجازی، پایگاههای داده، فضای ذخیرهسازی ابری و سایر خدمات محاسباتی و ذخیرهسازی در ابر میشود)
سرویس APIها رابطهای استانداردی ارائه میدهند که روشهای ارتباط و تبادل داده را رسمیت میبخشند. این استانداردسازی تضمین میکند که سیستمهای مختلف میتوانند به صورت پایدار و قابل پیشبینی با هم تعامل داشته باشند و دانش به صورت قابل اعتماد منتقل شود. به عنوان مثال سرویس نقشه گوگل از پروتکل استاندارد HTTP/HTTPS برای ارتباط استفاده میکند و روش های استفاده از آن به طور جامع در مستندات API آن توضیح داده شده است.
سوال: پروتکل HTTP یا Hypertext Transfer Protocol چیست؟ (این همان دانش های در تنیده ای است که منجر به پیچیدگی و دشواری فهم API در یک جمله میشود)
پاسخ: به طور ساده، میتوان این پروتکل را به عنوان یک زبان مشترک بین کامپیوتر شما و سرورهایی که صفحات وب را ارائه میدهند تصور کرد. هنگامی که شما یک صفحه وب را در مرورگر خود باز میکنید، مرورگر با استفاده از پروتکل HTTP با سرور مرتبط ارتباط برقرار میکند تا اطلاعات مربوط به صفحه را دریافت کند و به شما نمایش دهد. فرض کنید شما یک نامه به یکی از دوستانتان مینویسید. به اداره پست میروید و نامه را به کارمند پستی پشت پنجره میدهید. به او میگویید که نامه شما را میخواهید به کجا بفرستد و او باقی کارها را انجام میدهد و از اینکه نامه به مقصد مورد نظرتان برسد اطمینان حاصل میکند.
حالا فرض کنید پروتکل HTTP مانند دستورالعملی است که به کارمند پستی میدهید. وقتی شما یک آدرس وب را در مرورگرتان تایپ میکنید، مثل این است که به کارمند پستی میگویید که نامه شما را میخواهید به کجا بفرستید. پروتکل HTTP اطمینان میدهد که درخواست شما به درستی به مقصد مورد نظرتان در اینترنت برسد، همانطور که کارمند پستی اطمینان حاصل میکند که نامه شما به آدرس صحیح میرسد.
سرویس APIها پیچیدگیهای زیربنایی سیستمهایی که با آنها ارتباط دارند را انتزاع میکنند. با ارائه مجموعهای ساده از عملیات یا نقاط انتهایی (Endpoints)، کاربران میتوانند بدون نیاز به درک جزئیات داخلی سیستم، به دادهها و عملکردهای مورد نیاز دسترسی پیدا کنند. این انتزاع، دانش پیچیده را دسترسپذیرتر میکند. همانند APIهای Google Calendar که به کاربران امکان مدیریت تقویم آنلاین خود را بدون نیاز به دسترسی به کدهای سطح زیرین سیستم فراهم میکنند.
سرویس APIهای مؤثر دارای مستندات دقیقی هستند که نحوهی استفاده از API، نقاط انتهایی، روشها، پارامترها و پاسخهای مورد انتظار را توصیف میکنند. این مستندسازی به عنوان یک ابزار شناخت حیاتی عمل میکند و دانش لازم برای تعامل صحیح با API را به وضوح بیان میکند.
تفسیر سادهی ماژولاریتی به این صورت است که یک سیستم بزرگ را به قطعات کوچکتر و کارآمدتر تقسیم کنید. هر قطعه، یک وظیفه خاص را انجام میدهد و مستقل از بقیه عمل میکند. این ماژولها برای انجام کارهای مختلف با هم ترکیب میشوند و از این طریق سیستم به طور کلی عمل میکند. به طور مثال، در یک خانه، هر اتاق ماژولی است که برای یک اهداف خاص مانند خوابیدن یا پذیرایی طراحی شده است. این اتاقها با هم ترکیب میشوند تا یک خانه کامل شکل دهند.
سرویس APIها ماژولاریت را در طراحی نرمافزار ترویج میدهند، جایی که سیستمها میتوانند به اجزای جداگانه با رابطهای مشخص تقسیم شوند. این ماژولاریت به سازماندهی و مدیریت دانش کمک میکند، زیرا هر API یک زیرمجموعه خاص از عملکردهای سیستم را محصور میکند. به عنوان مثال یک پلتفرم فروشگاه آنلاین به توسعهدهندگان اجازه میدهد تا بخشهای مختلف خود را مدیریت و سفارشی کنند بدون نیاز به تغییرات در بخشهای دیگر.
سرویس APIها امکان تعامل پذیری بین سیستمها، پلتفرمها و فناوریهای مختلف را فراهم میکنند. این ویژگی برای ادغام و ترکیب دانش در حوزههای مختلف بسیار مهم است و دسترسی و استفاده از اطلاعات را گسترش میدهد.
سرویس APIها اغلب شامل مکانیزمهایی برای احراز هویت، مجوزدهی و کنترل دسترسی هستند که اطمینان میدهند فقط کاربران یا سیستمهای مجاز به دانش یا عملکرد خاصی دسترسی دارند. این کنترل برای مدیریت دانش و حفظ امنیت و حریم خصوصی ضروری است.
سرویس APIها میتوانند با گذشت زمان تکامل یابند و نسخههای جدیدی برای گسترش عملکرد یا بهبود عملکرد منتشر شوند. نسخهبندی امکان حفظ دانش (سازگاری با نسخههای قدیمی) را فراهم میکند و در عین حال امکان کسب دانش جدید از طریق رابطهای بهروزشده را فراهم میکند. به عنوان مثالFacebook Graph API که با انتشار نسخههای جدید، قابلیتهای جدیدی را اضافه میکند و در عین حال امکان استفاده از نسخههای قبلی را حفظ میکند.
سرویس APIها معمولاً با استفاده از فرمت های خوانای ماشین مانند JSON یا XML ارتباط برقرار میکنند که برای تجزیه و تحلیل و پردازش کارآمد توسط سیستمهای نرمافزاری طراحی شدهاند. این ماشینخوانی برای تبادل و پردازش خودکار دانش بسیار مهم است.
سرویس APIها اغلب دادهها (Contextualized Data) و عملکردهایی ارائه میدهند که به موارد استفاده یا برنامههای خاص مرتبط هستند. این ارتباط زمینه ای کاربرد و قابلیت استفاده از دانش انتقال یافته را افزایش میدهد. به عنوان مثال مثال Spotify API که به توسعهدهندگان اجازه میدهد از آهنگها، لیستهای پخش و دادههای مربوط به موسیقی به طور مستقیم در برنامههای خود استفاده کنند، ارتباط زمینه ای با دنیای موسیقی را ایجاد میکند.
به طور خلاصه، از دیدگاه شناخت شناسی، APIها به واسطهی نقششان در واسطهگری- mediation، استانداردسازی- standardization، انتزاع -abstraction و مستندسازی- documentation انتقال دانش بین سیستمها شناخته میشوند. آنها امکان تعامل پذیری - interoperability را فراهم میکنند، کنترل دسترسی را اجرا میکنند، در حالی که اطمینان حاصل میکنند که اطلاعات در فرم قابل خواندن توسط ماشین ها و در معنای مرتبط ارائه بشوند.