API (ای پی آی) چیست؟
API (ای پی آی) چیست؟
API ها امروزه دنیای مدرن وب را تحت تاثیر خود قرار دادهاند. اکنون شما براحتی میتوانید با استفاده از اپلیکیشنهای تلفن همراه، وارد حساب ایمیل خود شوید و یا بدون استفاده از سایتهای شبکههای اجتماعی و فقط با یک کلاینت وارد حساب کاربری خود شده و فعالیت داشته باشید. همهی اینها به واسطهی وجود APIها امکانپذیر شده است.
ای پی آی یا API مخفف واژه Application Programming Interface و به معنی رابط برنامه نویسی کاربردی است. در اصل یک وب سرویس یا ای پی آی، رابط میان یک منبع یا سیستمعامل و برنامههایی است که از آن تقاضای سرویس میکنند. به عبارت سادهتر، رابط برنامه نویسی مجموعهای از توابع است که یک برنامه میتواند از یک برنامه دیگر فرا بخواند.
در واقع API رابط یا زبان مشترک میان دو نرم افزار یا اپلیکیشن است که امکان ارتباط بین آنها را برقرار میکند. به عبارت دیگر، وب سرویس ها، قراردادهایی با زبان مشترک میان دو یا چندین نرم افزار هستند، که بدون وجود این رابط های برنامه نویس گفتگویی میان آنها صورت نمیپذیرد.
دو مفهوم مهم در فرهنگ API ها وجود دارد که باید درک شوند:
۱- ارائه دهنده API:
ارائه دهنده ای پی آی، شخص یا شرکتی است که قصد دارد تا خدمات خاصی را از طریق یک وب سرویس خاص ارائه نماید. وب سرویسی که خود ارائه دهنده آن را طراحی کرده و در اینترنت در دسترس کاربران خود قرار داده است.
۲- مصرف کننده (کلاینت) API:
مصرف کنندگان ای پی آی، برنامه نویسان و یا غالبا توسعه دهندگان نرم افزارهایی هستند که میخواهند اپلیکیشنی را براساس یک وب سرویس و یا بر پایه نیاز روز مردم، برای کاربران خود طراحی کنند.
انواع API از لحاظ دسترسی
وب سرویس ها از لحاظ دسترسی به سه دسته عمومی تقسیم می شوند:
۱- ای پی آی های عمومی یا باز (Open APIs):
این وب سرویس ها به صورت رایگان در دسترس همه توسعه دهندگان قرار دارند. معمولا این نوع API ها به صورت گسترده و به سادگی در فضای اینترنت در دسترس می باشند.
۲- ای پی آی های خصوصی (Internal APIs):
این نوع از API ها بیشتر جنبه مصرف داخلی داشته و تنها در یک سازمان و یا در میان گروه خاصی در دسترس میباشد.
۳- ای پی آی های مشارکتی (Partner APIs):
این گروه از ای پی آی ها غالبا پولی هستند، و صرفاً در اختیار کسب و کارهای به اصطلاح B2B و B2C قرار میگیرند.
انواع API از لحاظ کاربردی
ای پی آی سختافزاری:
این دسته از رابطهای برنامه نویسی، برای ایجاد ارتباط میان سخت افزارهای یک سیستم (مثلا سیستم خنک کننده CPU) استفاده میشوند. به بیان ساده این API ها نقش اعصاب را در یک سیستم برای انتقال دستور و ترجمه دستورها، به زبان سخت افزار ایفا میکنند. تلویزیونهای هوشمند، گوشیهای موبایل، دوربینهای تحت شبکه و بسیاری دیگر از سیستمهای جدید از این نوع api ها بهره میگیرند.
ای پی آی سیستم عاملی:
این نوع API ها به منزله لایهای انتزاعی (Layer of Abstraction) هستند که میان توسعه دهنده نرم افزار و سیستم عامل قرار میگیرد.
ای پی آی زبانهای برنامه نویسی:
زبانهای برنامه نویسی غالبا شامل یک هسته اصلی (شامل سینتکس زبان، نحوهٔ ساخت متغیر، دیتا تایپها و …) و یکسان میباشند که در کنار آن فریم ورکها فیچرهای تکمیلیای را تحت عنوان api آن زبان را در دسترس برنامه نویسان قرار میدهند.
کیتهای توسعهٔ نرمافزار (Software Development Kit):
SDK ها نیز نوعی دیگی از ای پی آی ها هستند که توسط شرکتهای مختلفی همچون گوگل، فیسبوک و … عرضه میشوند. توسعه دهندگان با استفاده از همین SDK ها میتوانند اقدام به توسعهٔ نرم افزارها کنند.
ای پی آی تحت وب (وب سرویس):
این نوع API، کاربردیترین نوع ای پی آی است که در بستر وب پیاده سازی میشود. وب سرویس یا Web API ها در حقیقت پروتکلهایی هستند که از طریق شبکهٔ اینترنت و وب تعامل میان اپلیکیشنهای مختلف را امکانپذیر میسازند.
توسعه دهندگان نرم افزارها، با بکار گرفتن API های موجود در بازار در وقت و هزینههای خود صرفه جویی میکنند و به نوعی تابع سیستم SaaS هستند.
امنیت ای پی آی
اقدامات امنیتی ای پی ای و حفاظت از وب سرویس ها یکی از ابعاد مهم در ساخت API ها به شمار میرود. به طور حتم با زیاد شدن ارتباطات و وسعت یافتن آنها خطر نفوذ در برنامهها نیز افزایش مییابد. ارائه دهندگان ای پی آی همواره موظف هستند تا تعادل میان بخش امنیت API و سهولت استفاده از آن را برقرار نمایند. توجه داشته باشیم که یکی از ویژگیهای استفاده از ای پی آی ها، بحث سهولت در کار با آنان است. پس اگر بخواهیم موانع امنیتی سختی برای یک API ایجاد کنیم، رسما کارکرد آن را مختل نمودهایم. این یعنی در بحث امنیت API ها، ارائه دهندهها دیگر نمیتوانند از وابستگیهای پیچیده سیستمی و یا مدلهای مدیریتی بیش از حد سفت و سختی استفاده کنند که در نسل های پیشین IT بکار میرفتند.
منابع بسیاری وجود دارند که با توجه به آخرین وضعیت حملات در فضای کلی اینترنت، برای افزایش سطح امنیت و حفظ تعادل ای پی آی ها توصیههایی را منتشر میکنند.
برخی از مهمترین نکات امنیتی در حوزه وب سرویس ها:
? ای پی آی ها میبایست با حداقل پرمیشن (مجوز) ممکن ارائه شوند. هرچه پرمیشنهای API بیشتر باشند، احتمال بروز رفتاری غیرقابل انتظار از وی نیز بیشتر خواهد بود.
? سطح دسترسی کاربران به هر سورس (منبع) در سمت سرور را به صورت پیشفرض میباید مسدود نمود.
? معماری ای پی آی ها تا حد ممکن باید ساده باشد، تا خطاپذیری سرویس کمتر شود.
? در طراحی ای پی آی تا حد ممکن باید از پروتکلهای امنی مانند HTTPS استفاده نمود.
? تا جای ممکن باید اطلاعات حساس را هش کنیم.
? تا حد امکان می باید پارامترها را اعتبار سنجی نمود.
اصول طراحی API
در دنیای امروز دیگر ارائه API برای هر اپلیکیشن و یا وب سایت پر مخاطب و پولساز، به یک بایست تبدیل شده است. در نتیجه نحوه طراحی این وب سرویس ها نیز میباید حائز شرایط خاصی گردد.
? وب سرویس شما باید مستقل عمل کند.
این مطلب به معنی آن است که هر کلاینت و سروری که قصد ارتباط با ای پی آی شما را دارد (بدون در نظر گرفتن عملکرد داخلی API شما) باید بتواند به راحتی با آن ارتباط برقرار کند. این موضوع یعنی API شما از پروتکلها و استانداردهای مناسبی در ساختار استفاده کرده است.
? به فکر تکامل خدمات وب سرویس خود باشید.
وب سرویسی که به مشتری ارائه میکنید، به طور حتم به مرور زمان باید تکمیلتر خواهد شد. اما توجه داشته باشید که این تکامل نباید تاثیری در اپلیکیشنهایی که از API شما استفاده میکنند داشته باشد. علاوه براین تغییرات برای کاربران شما باید به سادگی مشهود و قابل پیگیری باشند.
در زمان طراحی ای پی آی خود بهتر است به نکات زیر توجه داشته باشید:
?? در هنگام طراحی وب سرویس خود، تنها بر هدف و وظیفه API تمرکز داشته باشید.
?? تا حد ممکن کدهای URI خود را پیچیده نکنید و ساده طراحی نمایید.
?? در URI ها از فعل و اسم استفاده نکنید.
?? از متدهای شناخته شده HTTP استفاده کنید.
?? از کدهای HTTP مناسب استفاده کنید.
?? از حالت جمع استفاده کنید.
?? از پارامترها استفاده کنید.
?? دادههای خود را فیلتر نموده و صفحه بندی کنید.
?? حتما API خود را نسخه بندی کنید، و آنها را با شماره از هم متمایز نمایید.
?? در پاسخ های API از فرمتهای پشتیبانی شده استفاده نمایید.
?? در پاسخ به منابع باینری بزرگ، از پاسخهای جزئی استفاده کنید.
?? برای ردیابی آسان منابع از HATEOAS (ابر رسانه به عنوان موتور حالت برنامه کاربردی) استفاده کنید.
?? از پیامهای خطای مناسب استفاده کنید.
?? از مشخصههای OpenAPI استفاده کنید.
مزایای وب سرویس ها و API
پس از استقبال شدید از سیستم های SaaS، شاهد فراگیر شدن وب سرویس ها و استفاده از API ها در سازمانها، استارتاپها و شرکتهای قدیمی و فعال دنیا بودهایم. دلیل این استقبال مطمئنا مزیتهایی بیشماری است که API ها به ارمغان داشته اند و برخی از آنها شامل موارد زیر می باشد:
- ارائه تخصصی خدمات توسط هر API
- کاهش هزینههای مالی و زمانی برای شرکتها بوسیله استفاده از وب سرویسهای موجود
- افزایش سطح کیفی و بالا بردن سرعت ارائه خدمات
- امکان ایجاد ارتباط میان برنامهها و سیستم عاملهای مختلف و ناهمگون به واسطه بکارگیری API ها
- امکان یکپارچه شدن برنامهها چند شرکت (و یا چند بخش از یک سازمان) بدون در نظر گرفتن بعد مکان و مسافت
- غیر انحصاری شدن خدمات ارائه شده بوسیله API ها
- ایجاد انعطاف پذیری بالا در سازمانها
اگر سؤالی و یا تجربیاتی در این زمینه دارید میتوانید آن را در قسمت دیدگاهها با ما در میان بگذارید تا کارشناسان ما در کوتاهترین زمان به آن پاسخ دهند.
دیدگاهتان را بنویسید