مقدمه
شاید برای شما نیز اتفاق افتاده باشد زمانی که واژه API را بشنوید با خودتان بگویید API چیست؟ و چه کاربردی دارد؟ وب API مجموعهای از ابزارها است که به توسعهدهندگان وبسایتها این اجازه را میدهد تا دستورالعملها و دادهها را از طریق اتصال به سرورهای وب ارسال و دریافت کنند. بسیاری از وبسایتها و برنامههای کاربردی وب که امروزه استفاده میکنیم، توسط APIها پشتیبانی میشوند.
در برنامههای کاربردی در فضای وب، کدهای فرانتاند مستقیم با پایگاه داده ارتباط برقرار نمیکنند. اما در عوض، دادهها از طریق یک لایه به نام API ارسال و دریافت میشوند. در واقع API به عنوان یک لایه میانی بین بکاند، عملیات پایگاه داده و برنامههای فرانتاند که کاربر با آن تعامل دارد عمل میکند.
در واقع یک لایه API:
- تضمین میکند که یک صفحه وب اجازه دارد درخواستها را ارسال و دریافت کند.
- قبل از ارسال درخواست به سمت بکاند، فرمت صحیح درخواست را تأیید میکند.
- دادهها را در قالب مورد انتظار به همراه برخی اطلاعات اضافی بر میگرداند.
- به صفحه وب علت اینکه چرا دادهها برگردانده نشده است را میگوید.
انواع API
انواع مختلفی از APIها وجود دارد که دارای سطوح مختلفی از امنیت و حریم خصوصی هستند. 4 نوع اصلی از انواع API وجود دارند که در ادامه هر یک را بررسی میکنیم:
1- APIهای عمومی
APIهای عمومیکه با نام APIهای خارجی نیز شناخته میشوند، با حداقل محدودیت در دسترس توسعهدهندگان و سایر کاربران قرار میگیرند. استفاده از این نوع API ممکن است نیاز به ثبتنام و استفاده از یک کلید API داشته باشید و یا اینکه کاملاً باز باشند. این نوع API برای کاربران خارجی برای دسترسی به دادهها یا خدمات در نظر گرفته شده اند.
2- APIهای درونی
برخلاف APIهای باز، APIهای داخلی طوری طراحی شدهاند که از دید کاربران خارجی پنهان باشند. آنها در یک شرکت برای به اشتراک گذاشتن منابع استفاده میشوند. آنها به تیمها یا بخشهای مختلف یک کسبوکار اجازه میدهند تا ابزارها، دادهها و برنامههای یکدیگر را مصرف کنند.
3- APIهای شریک
این نوع API از نظر فنی بسیار شبیه به APIهای باز هستند، اما دسترسی محدودی دارند و اغلب از طریق یک دروازه API شخص ثالث کنترل میشوند. آنها معمولاً برای یک هدف خاص مانند ارائه دسترسی به یک سرویس پولی در نظر گرفته میشوند.
4- APIهای ترکیبی
APIهای ترکیبی به توسعه دهندگان اجازه میدهند تا در یک تماس به نقاط پایانی دسترسی داشته باشند. این نقطه پایانی میتواند ویژگیهای پایانی را در یک API واحد داشته باشد یا میتواند سرویس یا منبعی داشته باشد. APIهای ترکیبی به ویژه در معماریهای میکروسرویس مفید هستند، جایی که ممکن است برای انجام یک کار اطلاعاتی از سرویسهای مورد نیاز باشد. استفاده از APIهای ترکیبی میتواند باعث کاهش و عملکرد کاربر برنامه را بهبود بخشد، زیرا یک تماس میتواند تمام موارد مورد نیاز را برگرداند.
انواع پروتکلهای API
ما همچنین میتوانیم APIها را از نظر نوع پروتکل نیز دستهبندی کنیم. پروتکل API شامل قوانینی است که تعیین میکند یک API چه اطلاعاتی را میتواند با مشتریان به اشتراک بگذارد و چگونه دادهها را به اشتراک بگذارد. RPC
، SOAP
و REST
از جمله محبوبترین پروتکلهای API هستند که امروزه بیشترین استفاده را دارند. در ادامه به جزئیات بیشتری از هر یک از این پروتکلها خواهیم پرداخت.
Remote Procedure Call (RPC)
پروتکل RPC سادهترین پروتکل در بین این سه معماری است. برخلاف REST و SOAP که انتقال دادهها را تسهیل میکند، APIهای RPC فرآیندها را فراخوانی میکنند. به عبارت دیگر اسکریپتها را روی سرور اجرا میکنند. APIهای RPC ممکن است از JSON یا XML در تماسهای خود استفاده کنند.
Service Object Access Protocol (SOAP)
SOAP پروتکلی برای انتقال دادهها در سراسر شبکه است و میتوان از آن برای ساخت API استفاده کرد. SOAP دقیقاً نحوه ارسال پیامها و مواردی که باید در آنها گنجانده شود را مشخص میکند. این مورد باعث میشود که APIهای SOAP ایمنتر از APIهای REST باشند.
Representational State Transfer (REST)
امروزه اکثر APIهای وب بر روی REST ساخته شدهاند. REST شامل مجموعهای از دستورالعملها برای APIهای مقیاسپذیر، سبک و آسان برای استفاده است. REST API یک API است که از دستوالعملهای REST پیروی میکند و برای انتقال دادهها از سرور به مشتری درخواست کننده استفاده میشود.
به طور خلاصه دستورالعملهای REST API شامل موارد زیر است:
- جداسازی Client-Server: تمامی تعاملات کلاینت سرور باید به صورت درخواستی از سوی مشتری و به دنبال آن پاسخی از سوی سرور باشد.
- رابط یکنواخت: همه درخواستها و پاسخها باید از HTTP به عنوان پروتکل ارتباطی استفاده کنند و به روش خاصی فرمتبندی شوند تا از سازگاری بین کلاینت و سرور اطمینان حاصل شود.
- مستقل بودن: هر تعامل کلاینت سرور باید مستقل از تعاملهای دیگر باشد. سرور هیچ دادهای از درخواستهای مشتری ذخیره نمیکند و چیزی از تعاملات گذشته را به خاطر نمیآورد.
- سیستم لایهای: درخواستها و پاسخها باید همیشه به یک شکل قالببندی شوند، حتی زمانی که از طریق سرورهای میانی بین مشتری و API ارسال میشوند.
- Cacheable: با استفاده از این دستورالعملها، APIهای REST را میتوان برای انتقال سریع، آسان و ایمن داده استفاده کرد و آنها را به یک انتخاب محبوب در میان توسعه دهندگان تبدیل کرد.
انواع APIها از لحاظ موارد استفاده
در دستهبندی دیگری برای APIها همچنین میتوان از لحاظ موارد استفاده به نیز دستهبندی نمود که عبارتند از:
open API
از نظر ساختاری open API یک فرمت استاندارد برای تعریف ساختار و نحو APIهای استاندارد REST است. اسناد open API هم به صورت ماشینی و هم توسط انسان قابل خواندن هستند که به هر فردی اجازه میدهد به راحتی نحوه عملکرد هر API را تعیین کند. مهندسان از open API میتوانند برای برنامهریزی و طراحی سرورها، تولید و اجرای تست استفاده کنند.
API gateway
اکثر APIهای سازمانی از طریق API gateway مستقر میشوند. API gateway به طور معمول وظایف معمولی را که در یک سیستم از سرویسهای API استفاده میشود مانند احراز هویت کاربر، محدود کردن نرخ را انجام میدهند. یک سرویس API gateway یک درخواست از راه دور را میپذیرد و یک پاسخ را برمیگرداند.
web API
برنامهای که از نام web API مشخص میشود API نوعی رابط است که مجموعهای از توابع دارد. این مجموعه از توابع به برنامهنویسان اجازه میدهد تا برخی از ویژگیهای خاص یا دادههای یک برنامه را به دست بیاورند. WEB API که از نام آن پیداست یک API است و با استفاده از پروتکل HTTP از طریق آن به وب دسترسی دارد. این کار میتواند به شما کمک کند تا خدمات REST را برای HTTP ایجاد و توسعه دهید.
کاربرد API چیست؟
همانطور که در تعریف API چیست گفته شد، API شرکتها را قادر میسازد تا دادهها و عملکرد برنامههای خود را برای توسعهدهندگان شخص ثالث خارجی، شرکای تجاری و بخشهای داخلی شرکت خود باز کنند. این به خدمات و محصولات اجازه میدهد تا با یکدیگر ارتباط برقرار کنند و از دادهها و عملکرد یکدیگر از طریق یک رابط مستند استفاده کنند. توسعهدهندگان نیازی به دانستن نحوه پیادهسازی یک API ندارند. آنها به سادگی از یک رابط برای ارتباط با سایر خدمات و محصولات شرکت استفاده میکنند.
API key چیست؟
کلید API یک شناسه منحصر بفرد است که برای احراز هویت تماسهای یک API استفاده میشود. کلید API از رشتهای از حروف و اعداد تشکیل شده است که کلاینت را شناسایی میکند. کلید آن درخواست را براساس مجوزهای دسترسی به مشتری اعطا یا رد میکند و تعداد درخواستهای انجام شده را برای اهداف استفاده و صورتحساب ردیابی میکند. با محدود کردن دسترسی فقط به کسانی که کلید دارند، یک شرکت میتواند تعداد تماسهای برقرار شده با API خود را کنترل کند و اطمینان حاصل کند که فقط یک گروه خاص و قابل اعتماد از مشتریان میتوانند به منابع سرور خود دسترسی داشته باشند.
GraphQL
GraphQL یک زبان پرسوجو منبع باز است که برای ارائه داده به برنامههای موبایل و وب استفاده میشود. این شبیه به REST است که برای واکشی دادهها برای برنامه استفاده میشود، اما روش آن برای نحوه بازیابی دادهها کاملاً متفاوت است. در حالی که APIهای REST عالی هستند و بیشترین استفاده را دارند، GraphQL تکنیک API جدیدی را معرفی میکند که میتواند برای بهبود کارایی و انعطاف پذیری استفاده شود.
تفاوت بین نرمافزار و API چیست؟
بزرگترین تفاوت بین نرمافزار و API چگونگی تأثیرگذاری آنها بر روی کاربر است. هر دو مورد شکلی از اتصال را ارائه میدهند در حالی که APIها برای استفاده توسط برنامههای نرمافزاری در نظر گرفته شدهاند اما برنامههای نرم افزاری برای استفاده توسط انسان در نظر گرفته شدهاند.
APIها معمولاً تنها بخشی از یک نرمافزار خاص هستند و بیشتر برنامههایی که استفاده میکنید در برخی ظرفیتها به چندین API وابسته است.
از سوی دیگر، برنامهها بسیار انعطافپذیرتر هستند. برنامهها ممکن است از چندین API برای کمک به کاربر برای انجام یک کار استفاده میکنند. APIها به گونهای طراحی شدهاند که به راحتی با نرمافزار انتخابی شما ادغام شوند و میتوان از آنها به طور خاص برای گردشهای کاری و فردی استفاده کرد.