API یا همان واسط نرم افزار برنامه ی کاربردی (Application Program Interface) در واقع یک سری کد است که امکان برقراری ارتباط بین دو برنامه را امکانپذیر میکند. برنامهها میتوانند یک نرم افزار کامپیوتری، یک وب سایت و یا یک سیستم عامل باشند. به وسیلهی این کدها، توسعه دهندگان امکان تقاضا برای دریافت سرویس از این برنامهها و تبادل اطلاعات بین برنامهها را دارا میباشند.
تقریبا امکان تبادل هر نوع دادهای به وسیلهی API امکانپذیر است. APIها به وسیلهی فراخوان توابع نرم افزاری یا همان Function Call پیاده سازی میشوند. سینتکسهای (Syntax) مربوط به هر API نیز داخل Document برنامهی مربوط به آن نوشته شده است. به عنوان مثال فرض کنید یک API برای یک برنامهی هواشناسی وجود دارد. به وسیلهی سینتکسها یا همان کدهای واسط این برنامهی هواشناسی، میتوان سرویسهای ارائه شده را درخواست کرد. مثلا دمای هوای یک شهر خاص یا میزان رطوبت و پیشبینی دمای هوا در روزهای آتی.
API ها چگونه کار می کنند؟
APIها از دو جزء تشکیل شدهاند. جزء اول در واقع مشخصات و نحوهی تبادل اطلاعات بین برنامه ها را مشخص میکند، یعنی همان درخواستی که برنامهی گیرنده از فرستنده دارد و فرستنده اطلاعات خواسته شده را در قالب و فرمت درخواستی بر میگرداند. بخش دوم همان واسط نرم افزاری است که برای ارتباط بین برنامهها ساخته و منتشر شده است. دو مفهوم Publish و Call در API وجود دارد. نرم افزاری که API را میسازد، آن را Publish یا منتشر میکند. نرم افزاری که از این API ساخته شده و منتشر شده تقاضای یک سرویسی میکند، تقاضا را Call یا فراخوان میکند.
برای دسترسی و درخواست سرویسها از APIها، اکثر آنها سیستمهایی برای احراز هویت و دریافت مجوز دارند. به عنوان مثال ممکن است قسمتی از API تنها به صورت رایگان در دسترس باشد و قسمتی دیگر خیر، یا مثلا دسترسی افراد عادی به API با دسترسی شرکتها فرق کند. همچنین APIها امکان رصد کردن کاربرانی را که از سرویسهای آنها استفاده میکنند را نیز دارند. به عنوان مثال چه کاربری، چه موقع و از چه سرویسی در کجا استفاده کرده است.
دو نوع معماری و ساختار متداول برای ساخت APIها وجود دارد. معروف ترین آنها REST که مخفف Representational State Transfer و دیگری SOAP یا Simple Object Access Protocol است. این دو معماری یک پروتکل ارتباطی بر مبنای XML را ارائه میدهند. معماری SOAP به زیر ساخت سطح پایین یا Low-level کمتری نسبت به معماری REST نیاز دارد، اما کار با REST راحتتر است و امکان پیاده سازی آن برای وب سایتها و سرویسها به سادگی قابل انجام است. در حال حاضر از معماری REST به طور گستردهتری استفاده میشود. به ویژه در بحث ارتباط میان وب سایتها و ارتباط بین اپلیکیشن و وب سایت (مثلا نرم افزار های موبایلی).
چرا API ها برای یک کسب و کار مهم هستند؟
استفاده از API باعث سهولت و افزایش کیفیت یک نرم افزار در ارائهی خدمات میشود. نرم افزارهایی که برای یک هدف مشخص ساخته شده بودند، امروزه معمولا در قالب API پیاده سازی میشوند تا ویژگیهای خاصی را ارائه دهند. به این وسیله زمان و هزینهی توسعه دادن کاهش پیدا میکند و از انواع ارورها و خطاها جلوگیری میشود. به عنوان مثال در همین API هواشناسی که پیشتر ذکر شد، توسعه دهندگان به راحتی میتوانند داخل نرم افزار خود از امکانات هواشناسی استفاده کنند. اگر چنین APIای وجود نداشت، مسلما خود توسعه دهنده میبایست به ساخت یک نرم افزار هواشناسی از ابتدا میپرداخت.
تعداد بالای وب سرویس هایی که از طریق API با ارائه دهندگان ابری یا Cloud Providers ارتباط برقرار میکنند، باعث بوجود آمدن برنامههای کاربردی مخصوص ابری یا Cloud-Specific و برنامههایی برای پشتیبانی از تلفنهای همراه شده است.
APIها باعث بوجود آمدن موقعیتهای شغلی و کسب و کارهای جدید نیز شدهاند. به عنوان مثال API ای را فرض کنید که قیمت روز ارزهای مختلف یا سهامها را مشخص میکند. این API میتواند از درخواست کنندههای سرویساش پول دریافت کند. حالا نرم افزارهایی هستند که نیاز به بروز بودن قیمتها دارند. مثلا صرافیها، تبادلات ارزی، پیش بینی قیمت و... اینها میتوانند با پرداخت هزینهای، از امکانات API مذکور استفاده کنند.
استفاده از API چه مزایایی دارد؟
APIها معمولا یکسری قوانین و قواعد یکسانی دارند. به همین دلیل به یک شرکت کمک میکند تا برنامه نویسان آن شرکت، از یک قاعدهی یکسان برای کد نویسی استفاده کنند. این امر باعث افزایش خوانایی کد ها و سهولت در استفاده و ارتقای نرم افزار میشود. همچنین برقراری ارتباط و همکاری بین هم تیمیهای یک شرکت نیز راحتتر صورت میگیرد. که این امر خود موجب جلوگیری از هدر رفت زمان و کاهش هزینه های اضافی میشود.
APIها سازمانها را قادر میسازد تا:
- به صورت ایمن بر اینکه کدام کاربر و سیستم، از چه دادههایی و چه سرویسی از API استفاده میکنند را مدیریت کنند.
- با اجازه دادن به اشخاص ثالث برای استفاده از دیتاهای خود، برند خود را در معرض دید قرار دهند تا معروفتر شوند.
- از API خود کسب درآمد کنند. به عنوان مثال شرکتها حاضرند برای استفاده از یک رابط پرداختی امن، به کمپانی PayPal برای دریافت API و استفاده از خدمات آن پول پرداخت کنند (از نمونههای داخلی هم میتوان به زرین پال و پارس پال اشاره کرد).
از آنجایی که APIها از استانداردهای خاصی پیروی میکنند. در نتیجه پیاده سازی و توسعه ی API میتواند پیچیده و پرهزینه باشد.
انواع API ها
به طور کلی 4 نوع API وجود دارد: خصوصی (Private)، عمومی (Public)، مشارکتی (Partner) و ترکیبی (Composite). در زیر به توضیح مختصر هر یک از این APIها پرداخته شده است:
- API خصوصی: API خصوصی یا همان درونی (Internal) به API ای گفته میشود که تنها داخل یک شرکت و توسط توسعه دهندهها به منظور افزایش و بهبود عملکرد محصولات آن شرکت استفاده میشود. این نوع APIها در معرض دید عموم قرار ندارند و اشخاص ثالث قادر به استفاده از آن نیستند.
- API عمومی: این نوع APIها به طور عمومی منتشر میشوند و همگان قادر به استفاده از این نوع API هستند. هیچ گونه محدودیتی در استفاده از این نوع APIها وجود ندارد.
- API مشارکتی: APIهای مشارکتی تنها در دسترس افراد و شرکتهایی قرار میگیرد که سازندهی آن API، اجازهی دسترسی را به آنها داده است. این نوع APIها معمولا در ارتباط بین کسب و کارهای مختلف یک مجموعه مورد استفاده قرار میگیرد.
- API ترکیبی: این API چندین API را باهم ادغام یا ترکیب میکنند. توسعه دهندگان به وسیلهی تنها یک API از این نوع، میتوانند از سرویسهای مختلفی به صورت همزمان استفاده کنند. همچینین استفاده از این نوع API باعث افزایش کارایی و سرعت نیز میشود.
API میتواند از یک منظر دیگر نیز به سه دسته ی Local، Web و Program نیز تقسیم شوند.
- API محلی یا Local: سرویسهای یک میان افزار یا سیستم عامل را به برنامههای کاربردی ارائه میدهند. به عنوان مثال مایکروسافت دات نت یا Microsoft’s .NET، یک API ای است که دسترسی به بخشهای مختلف سیستم عامل را به راحتی به برنامه نویسان و توسعه دهندگان نرم افزارها میدهد. یا به عنوان مثالی دیگر، میتوان به API دسترسی به دیتابیس نیز اشاره کرد.
- API وب: طراحی شدهاند تا در صفحات HTML، مورد استفاده قرار گیرند. با استفاده از پروتکل HTTP، به راحتی میتوان با این APIها تعامل کرد. اکثر URLها در صفحات وب از این نوع API استفاده میکنند و معماری آنها نیز معمولا REST است. به همین دلیل به این APIها معمولا RESTful میگویند.
- API برنامه یا Program: بر پایهی فناوری RPC یا Remote Procedure Call ساخته شده است. به وسیلهی این نوع APIها میتوان سرویسهای یک برنامه را در برنامهی دیگر از راه دور (Remote) صدا زد. از نمونههای این API میتوان به SOA یا Service Oriented Architecture ها اشاره کرد. Microsoft’s WS-series یک نمونه از این نوع API است.
چرا طراحی API مهم است؟
طراحی و ساخت API، یکی از موارد اساسی برای هر شرکتی است و طرز ساخت آن از اهمیت بالایی برخوردار میباشد. معمولا وقت زیادی صرف این میشود که یک API به گونهای طراحی شود تا همهی جوانب نیازهای کاربران بررسی شود تا در نهایت یک API کارا و مفید تحویل مشتریان و کاربران داده شود. همچنین نوع ساختمان دادهآموزش ساختمان داده و الگوریتمهر ساختمان داده یک نوع فرمت ذخیرهسازی و مدیریت دادهها در کامپیوتر است، که امکان دسترسی و اصلاح کارآمد آن دادهها را برای یکسری از الگوریتمها و کاربردها فراهم میکند، در این صفحه به بررسی و آموزش ساختمان داده و الگوریتم پرداخته شده است و پارامترهای ورودی یک API نیز از مهم است. زیرا این مقادیر بین Publisher و Caller باید یکسان باشد. فرضا یک API برای دریافت اطلاعات فیلمهای سینمایی را در نظر بگیرید. وقتی از این API درخواست اطلاعات یک فیلم خاص میشود، ساختمان دادهی این درخواست باید از قبل مشخص باشد تا توسعه دهندگان بتوانند آن را به درسی به مشتریان خود نمایش دهند. مثلا پارامتر نام فیلم، امتیاز، زمان، نظر ها و...
از موارد مهم دیگر در طراحی یک API، امنیت آن میباشد. APIها باید از امنیت بالایی برخوردار باشند، زیرا این APIها واسط نرم افزاری بین کاربران و شرکت هستند. کاربران به دادهها و همچنین اطلاعات خاصی از شرکت از طریق این API دسترسی دارند. حال اگر در API مذکور یک شکاف امنیتی وجود داشته باشد، هکرها میتوانند به آن نفوذ کنند و به اطلاعات شرکت دسترسی پیدا کنند و انواع اقسام حملههای دیگر. بنابراین بحث امنیت از اهمیت بالایی برخوردار است.
نمونه هایی از API ها
از نمونههای API میتوان به سیستم عاملها و میان افزارها اشاره کرد. سیستم عامل ها معمولا ویژگی های API خود و امکانات آن را در قالب Toolkit منتشر میکنند. به وسیلهی این Toolkit میتوان برای آن سیستم عامل، انواع نرم افزارها و برنامهها را تولید کرد. یکی از نمونههای بارز این نوع API همانطور که گفته شد Microsoft’s .NET است که ابزارها و کدهایی را در دسترس توسعه دهندگان قرار داده است تا به وسیلهی آن بتوان برای سیستم عامل (و یا وب) نرم افزار تولید کرد.
بسیاری از نرم افزارها و برنامههایی که توسط شرکتها ساخته میشوند، دارای API خاص خود هستند. به عنوان مثال ابزارهای DevOps مانند Docker (داکر)، Jenkins و یا Gitlab. نرم افزارهای شبکههای اجتماعی نیز APIهای مخصوص نرم افزارهای خود را میسازند تا اشخاص ثالث بتوانند از عملکردهای آن نرم افزار استفاده کنند و یا آنهارا بهبود ببخشند.
بستر اصلی API در حال حاضر اینترنت است. شرکتهای مختلفی مانند فیسبوک، گوگل، یاهو و... APIهای خود را ساخته و منتشر کردهاند تا توسعه دهندگان بتوانند از آنها استفاده کنند و ویژگیهای جدیدی برای نرم افزار خود بوجود بیاورند. به عنوان مثال افراد زیادی با استفاده از APIهایی که اینستاگرام ساخته و منتشر کرده است، نسخههای شخصی از اینستاگرام را میسازند و ویژگیهای جدیدی را به آن اضافه میکنند. مثلا قابلیت دانلود تصاویر، ویدیو و استوری. و یا با استفاده از APIهای نرم افزار تلگرام، ویژگیهایی مثل حالت روح و تغییر صدا به آن اضافه شد.
روند API
با توجه به استفادهی گسترده از اینترنت و فراگیر شدن رایانش ابری (Cloud Computing) خیلی از برنامهها و نرم افزارها از حالت تک بعدی و یکپارچه بودن به سمت ریز سرویس ها یا Microservice ها تبدیل شدهاند که استفاده از APIها کمک شایانی به این امر کرده است.
ساختار REST و وب: APIهای تحت وب از طریق تمامی زبانهای برنامه نویسی قابل فراخوانی هستند. همچنین امکان فراخوانی آنها در صفحات HTML یا همان صفحات وبسایتها نیز وجود دارد. افزایش روزانهی استفاده از اینترنت و سیستمهای ابری، طریقهی استفاده از این APIها را ساده کرده است. حتی بدون دانش برنامه نویسی و نوشتن کد نیز میتوان به این APIها تنها از طریق وبسایت مورد نظر دسترسی داشت.
هردو ساختار REST و SOAP میتوانند به سرویسهای ابری متصل شوند، آنهارا مدیریت کنند و یا توابعهای آن را فراخوانی کنند. اما استفاده از سیستم REST در API تحت وب به شدت محبوب تر است. زیرا پهنای باند کمتری را مصرف میکند و سادهتر نیز میباشد. همچنین به وسیلهی زبانهایی مثل جاوا اسکریپت و پایتون میتوان به راحتی این سیستمها را پیاده سازی نمود. امروز اکثر شرکتها و وبسایتهای بزرگ نظیر آمازون، گوگل، لینکدین، و تویتر از API های RESTful برای سایت خود استفاده میکنند.
API ها و سیستم های ابری
همانطور که میدانید رایانش ابری، قابلیتهای جدیدی به نوع رایانش و پردازش اضافه کرده است که در آن، یک جز و یا یک فرایند، به بخشهای کوچکتری تقسیم شده و در نهایت در مقایس بزرگتر به هم متصل میشوند. یک فرایند میتواند به چند بخش تقسیم شده و توسط کامپیوترهای متعددی به صورت موازی پردازش شود. سیستم های ابری، الگوهای APIها را از مدل RPC-Programmer-Centric که پیش تر به آن اشاره کردیم، به سمت مدل RESTful Web-Centric تغییر داده است.
API ها به عنوان یک سرویس
قبلتر معمولا API را به دید تنها یک منبع میدیدند. مثلا پایگاهی برای دریافت اطلاعات در مورد قیمت، در مورد یک فیلم، وضعیت جوی و... که در برنامهها و ابزارها از آنها استفاده شود. اما امروزه به عنوان یک سرویس از آنها استفاده میشود که نیاز به کنترل و توسعهی بیشتری دارند. SOA و میکرو سرویس ها از نمونههای سرویس های API هستند.نقش API به عنوان سرویس، یکی از داغ ترین مباحث و روندهای APIها هستند که حتی پیش بینی شده در آینده تمامی APIها به عنوان سرویس دهنده عمل خواهد کرد.
انتشار و مدیریت API
شرکتهایی که به تولید و انتشار APIها میپردازند. مسئول کنترل کیفی این APIها، قابلیت اطمینان، کارایی و امنیت این APIها هستند. همچنین کنترل کردن عملکردهای جدید نیز بر عهدهی آنهاست. فرض کنید یک شرکتی، APIای ساخته برای دریافت قیمت روز ارز های دیجیتال، ممکن است تعداد درخواست کنندههای قیمت از هزار به چند ده و چند صد هزار کاربر افزایش پیدا کند. اگر سروری که این API بر روی آن مستقر است ضعیف باشد. کارایی این API پایین میآید و سرعتش کم میشود. بنابراین نیاز به بروز رسانی سرور است. یا فرض کنید ارزهای جدیدی وارد بازار شده اند. این API نیز باید با بروز رسانی، از ارزهای جدید پشتیبانی کند.
تست کردن API
مشابه تمامی نرم افزارها، APIها هم نیاز به تست کردن دارند. از ساختار آن گرفته تا نحوهی درخواست و دریافت اطلاعات، همه و همه میبایست تست شوند. همچنین با تست یک API مطمئن میشویم که:
- ارتباط بین نرم افزارها و به اشتراک گذاری اطلاعات بین آنها به درستی عمل میکند.
- اطلاعات بین شرکا همانطور که انتظار داریم تبادل میشود.
- دادههای بی ربط و اشتباه وارد پایگاه داده نمیشود و عملکرد برنامهها را مختل نمیکند.
- یک برنامه در تمامی پلتفرمها مثل دستاپ، موبایل و وب به درستی عمل میکند.
تست API معمولا بخشی از روند مدیریت چرخهی عمر برنامه یا Application Lifecycle Management (ALM) است، چه برای نرم افزاری که این API را منتشر کرده و چه برای برنامه و نرم افزاری که از این API استفاده میکند. APIها همچنین بعد از منتشر شدن هم تست میشوند که بررسی شود آیا به درستی کار میکنند یا خیر.
مدیریت API
بخش آخر این مقالهی مربوط به مدیریت APIها است. مدیریت API معمولا به قسمتی از روند کار API که مربوط به منتشر کردن آن و قابل استفاده کردن آن برای کاربران است اطلاق میشود. همچنین اینکه کاربران چگونه به این API میبایست دسترسی پیدا کنند، سیاستهای استفاده و مجوزهای لازم برای دسترسی به API هم در حیطهی کاری مدیریت API قرار دارد.
مدیریت API امری رایج است. همچنین از یک سازمان به سازمان دیگر ممکن است روند کار فرق کند. اما معمولا برخی از عملکردهای اساسی همانند امنیت، تجزیه و تحلیل اطلاعات و کنترل نسخهها بر عهدهی مدیریت API میباشد.
API ها به مستندات قوی و دقیق، قابلیت اطمینان و ایمن نیازمند هستند. برای برآورده کردن این نیازها، شرکتها معمولا از یک نرم افزار مدیریت API یا API Management Software استفاده میکنند که معمولا شامل چندین مولفهی اصلی هستند. لیست این مولفهها در زیر آمده است:
- API Developer Portal
- API Lifecycle Management
- API Policy Manager
- API Analytics
- API Gateway
منظور از API Economy چیست؟
پیشتر گفتیم که بعضی از قسمتهای API ممکن است رایگان باشد و بعضی از موارد دیگر خیر. شرکتها و تیمهای بسیاری وجود دارند که راه کسب درآمد آنها از طریق گرفتن حق الزحمه در قبال استفاده از API آنها صورت میگیرد. به عنوان مثال به ازای هر هزار درخواست یا Request ای که از سرویس آنها انجام میگیرد، چند دلار دریافت میکنند. بنابراین هرچه تعداد کاربران یک اپلیکیشن بیشتر باشد، تعداد درخواستها نیز بالاتر و هزینه به مراتب بیشتر میشود. به عنوان مثال یکی از API های معروف در این زمینه نقشهی گوگل یا Google Map است که به ازای هر ریکوئست مبلغ 0.003 دلار را از مصرف کننده دریافت میکند.
API چیست؟
API یک واسط نرم افزاری بین دو برنامه ی مختلف است که از طریق آن امکان ارتباط با یک دیگر را دارند. کاربران و اشخاص ثالث میتوانند توابع یک برنامه را به وسیله ی درخواست از یک API فراخوانی کنند. مانند درخواست موقعیت جغرافیایی یک منطقه از API نقشه گوگل یا درخواست دمای هوای یک شهر از API هواشناسی.
API چطور کار می کند؟
دو نوع متداول معماری SOAP و REST برای پیاده سازی API وجود دارد. معمولا برای APIهای تحت وب از معماری و ساختار REST استفاده میشود که به این سیستم ها RESTful میگویند. با توجه به کدهای ارتباطی که نوشته شده است، میتوان به پایگاه دادهی سرویس دهندهی API دسترسی داشت و از آن درخواست اطلاعات کرد.
آیا API دارای یک ساختمان داده ی مشخصی است؟
خیر، تقریبا هر نوع ساختاری با هر نوع داده را میتوان توسط API پیاده سازی کرد. به عنوان مثال دادهی دریافتی میتواند یک عدد باشد، یک رشته باشد، یک آرایه و هر دادهی دیگری میتواند باشد.
آیا تنها برنامه ها می توانند از API ها استفاده کنند؟
خیر افراد عادی و اشخاص ثالث نیز با استفاده از URLهای وبسایتها میتوانند درخواستهای خود از پایگاه دادهی وبسایت را ایجاد کنند.
آیا API در جایی به غیر از وب کاربرد دارد؟
بله، سیستم عاملها نیز API میسازند تا به وسیلهی آن، توسعه دهندگان، نرم افزارها و برنامههای کاربردی برای آن سیستم عامل ایجاد کنند.