فناوری مقاله

API را بهتربشناسیم

 

API واژه ای نام آشنا، در حوزه نرم افزار است، این واژه که مخفف واژگان Application Programming Interface  است؛ به معنی رابط برنامه نویسی نرم افزار ترجمه می‌شود.

چرایی به وجود آمدن مفهوم Api به گذشته های دور بر می‌گردد؛ زمانی پیش از فراگیر شدن سیستم های کامپیوتری در حوزه و صنف های مختلف کاری! چراکه در آن زمان، تنها انسان محور و مرکز توجه، جهت تعامل با نرم افزار های کامپیوتری بود. به طوری که وی از طریق User Interface یا به اختصار UI به تعامل با نرم‌افزار می‌پرداخت.

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

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

منظور از Layer of Abstraction چیست؟
‌برای روشن شدن این اصطلاح، فرض کنید در حوزه توسعهٔ نرم‌افزار سرویسی که ما به عنوان یک دولوپر API مرتبط با آن استفاده می‌کردیم با زبان Java روی سرورهای AWS  آمازون بود، اما شرکت مذکور تصمیم‌ می‌گیرد که آن را با Node.js بازنویسی کرده و روی سرورهای Azure مایکروسافت عرضه کند، اما تا زمانی که اصطلاحا  Endpoint مرتبط با آن API تغییر نکند، تغییری برای دولپرها اعمال نمی شود. بنابراین، سرویس‌های عرضه‌‌کنندهٔ API همچون گوگل نیز، تا زمانی که دست به تغییراستانداردهای خود نزنند و اختلالی در کار دولوپرها ایجاد نکنند، به سادگی می‌توانند سرورهای خود را upgrade کنند،‌ محل فیزیکی دیتاسنترهای خود را تغییر دهند و بین سرویس‌های کلود مختلف سوئیچ کنند.

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

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

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

کیت‌های توسعهٔ نرم‌افزار Software Development Kit یا به اختصار SDK نیز نوعی دیگری از ای‌پی‌آی‌ها است که توسط شرکت‌های مختلفی همچون گوگل،‌ فیسبوک و … عرضه می‌شوند تا دولوپرها با استفاده از این کیت‌ها بتوانند اقدام به توسعهٔ نرم‌افزار کنند؛ Android SDK  نمونه بارز این نوع از ای‌پی‌آی‌ها می باشد که کم و بیش با آن سرو کار داریم.

ای‌پی‌آی‌ دیگری نیز وجود دارد که به ای‌پی‌آی‌ تحت وب (وب سرویس) شهره دارد، این نوع ای‌پی‌آی یکی از متداول‌ترین و کاربردی‌ترین  API است. ای‌پی‌آی تحت وب، تعامل بین اپلیکیشن های مختلف با وب و شبکه اینترنت ممکن می سازد؛ به همین خاطر آن را Web Service  نیزمی‌نامند. به خاطر داشته باشیم که دیتا از طریق وب سرویس‌های مختلف به اشکال گوناگونی می‌تواند رد و بدل شود که از جملهٔ مهم‌ترین آن‌ها می‌توان به XML،JSON  و یا HTML اشاره کرد.

طراحی API
API ها همانند «سرویس های ابری» می مانند؛ خیلی ها صرفاً برای آن که به روز باشند ازآن استفاده می کنند، بدون آن که کاربرد صحیح آن را بدانند. طراحی API از بیس کار بسیار دشوار است و تخصص بسیاری می‌خواهد برای آنکه یک تصویر کلی از پروسه طراحی ای‌پی‌آی داشته باشیم، باید گفت که عموماً ای‌پی‌آی‌ها براساس برخی الگوها و استانداردها ساخته می‌شوند تا تمامی توسعه ‌دهندگان از سراسردنیا بتوانند بدون سردرگمی از آن‌ها استفاده کنند. به همین خاطر است که  طراحی و مدیریت API ها نیازمند نیروی انسانی متخصص و منابع بیشتر است.

 

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

یکی دیگر از حملات سایبری خطرناک Denial of Service یا DOS نام دارد که نیاز دارید تا راهکارهای حفاظتی برای مقابله با این حملات را نیز رعایت کنید. به طور کلی چه بخواهید API خود را توسعه دهید و چه از سرویسی استفاده کنید که آن را برایتان بسازد، باید بدانید که طراحی و مدیریت API ها بر اساس استانداردهایی پیش می رود که باید آن ها را رعایت نمود. این استانداردها به گونه ای وضع شده اند که برای کسانی که از API استفاده می کنند، آسان و قابل فهم باشند و تا حد ممکن از بروز نکات منفی ذکر شده جلوگیری می کنند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *