OpenAPI نوعی از API است که به طور عمومی در دسترس همه است. برای مثال APIهای شبکههای اجتماعی که برای طراحی و پیادهسازی ابزارهای کمکی یا یکپارچهسازی با پلتفرم در دسترس توسعهدهندگان قرار میگیرند، OpenAPI هستند. شبکههای اجتماعی مانند فیسبوک و توییتر توانستهاند با استفاده از این OpenAPIها، امکانات پلتفرم خود را داخل پروژهای گوناگون قرار دهند و موفقیت بسیاری کسب کنند.
پاراگراف بالا تعریفی ساده از OpenAPI را ارائه میکند. اما اگر بخواهیم دقیقتر نگاه کنیم، در واقع OpenAPI را میتوان مجموعهای از دستورالعملها دانست که نحوه کار و اجرای یک API عمومی را شرح میدهد.
دستورالعمل OpenAPI چیست؟
دستورالعمل OpenAPI که سابق بر این با نام دستورالعمل Swagger شناخته میشد، قالبی است که برای توصیف، تولید، مصرف و تصویرسازی سرویسهای وب RESTful استفاده میشود. در واقع این قالب دستورالعملهای استاندارد برای تعریف ساختار و نحوه اجرای REST APIها و مستقل از زبان برنامهنویسی است. این یعنی رایانهها و کاربران میتوانند بدون نیاز به اسناد اضافه، دسترسی به کد منبع و نظارت بر شبکه، قابلیتهای سرویس را شناسایی و درک کنند. OAS (دستورالعمل OpenAPI یا OpenAPI Specification) فرایند فراخوانی سرویسها و ارسال درخواست را بسیار سادهتر میکند. با OpenAPI شما میتوانید به راحتی نحوه کار API را درک کنید. دستورالعملهای OpenAPI به طور معمول با استفاده از YAML یا JSON نوشته میشوند.
یک OpenAPI شامل توضیحات مفصلی از API است، از جمله:
- اندپوینت، شامل اندپوینتهای در دسترس و عملیاتهای مجاز
- روشهای احراز هویت
- پارامترهای لازم برای عملیات
- اطلاعات تماس، قوانین استفاده، مجوز و سایر اطلاعات لازم
تفاوت Open API و Swagger
تا سال ۲۰۱۶ میلادی OpenAPI بخشی از Swagger بود تا این که به عنوان یک پروژه مستقل از آن جدا شد. در حال حاضر پروژه API توسط یک پروژه همکاری مشترک منبع باز بنیاد لینوکس به نام ابتکار عمل OpenAPI نظارت میشود. امروز ابزارهایی مانند Swagger میتوانند اسناد، کد و نمونه تستی برای دستورالعملهای OpenAPI تولید کنند.
برای درک تفاوت OpenAPI و Swagger، درک تفاوت بین دستورالعمل، ابزارهایی که به اجرای دستورالعمل کمک میکنند و کاربران ضروری است.
دستورالعمل در واقع همان OpenAPI است. دستورالعمل OpenAPI در ابتدا توسط Smartbear Software توسعه داده شد که بعدها آن را به صورت رایگان در اختیار همه قرار داد. حالا تیم ابتکار عمل OpenAPI در همکاری مشترک با ۳۰ سازمان دیگر از جمله Smartbear (که ابزارهای Swagger را توسعه میدهد)، گوگل، مایکروسافت، IBM، CapitalOne که نماینده بخشهای مختلف صنعت فناوری هستند، بر توسعه دستورالعمل نظارت میکند.
مجوعه ابزاری که اکثریت برای اجرای دستورالعمل OpenAPI از آن استفاده میکنند، Swagger است. این مجموعه شامل ابزارهای رایگان، منبع باز و پولی است که در مراحل مختلف چرخه حیات API به کار میروند. دلیل این امر، توسعه OpenAPI و Swagger توسط یک تیم (Smartbear Software) است. در واقع هنوز هم بسیاری از توسعهدهندگان این دو را یکسان میدانند. با این حال، Swagger تنها ابزار موجود برای اجرای OpenAPI نیست. طیف وسیعی از ابزارهای مستندسازی API، طراحی، مدیریت، تست و نظارت که از OpenAPI پشتیبانی میکنند در گیتهاب موجود است.
چرا از OpenAPI استفاده کنیم؟
دلایل مختلفی برای استفاده از OpenAPI وجود دارد که در ادامه به برخی از آنها اشاره میکنیم.
یک فایل توضیحات
مستندات OpenAPI توسط ماشینها قابل خواندن هستند و تنها از یک فایل برای توصیف API استفاده میشود. به این ترتیب میتوان مستندات API را به سیستم مشتری و برای فرایند تست ارسال کرد و هر بخش سیستم با استفاده از دستورالعمل تایید میشود. در استقرارهای بزرگتر، اجرای یک درگاه API قبل از پیادهسازی، امکان مقایسه و تطبیق ترافیک ورودی و خروجی با دستورالعمل را فراهم میآورد. همچنین کاربران میتوانند به APIهای ثالث دسترسی داشته باشند، که این موضوع خطرات بروز نقش در محصول را کاهش میدهد.
با استفاده از یک فایل برای توصیف API از جمله شیءها، اندپوینتها و مسیر، کاربران میتوانند توضیحات سمت سرور یا کلاینت را به یک دستورالعمل پیادهسازی تبدیل کنند که کد آن حاصل همان توضیحات است. به این ترتیب امکان عدم هماهنگی بین API سمت بکاند و API مصرفی مشتری کاهش مییابد.
اتوماسیون
OpenAPI به کاربران اجازه میدهد تا به طور خودکار کلاینتهای API تولید کنند تا با آخرین تغییرات کلاینت به روز شوند. تولید کلاینت API از داخل پروژهها و به طور خودکار به آن اجازه میدهد تا به راحتی مدیریت، یکپارچه و مصرف شود. به محض تعریف API، کاربران میتوانند برای اندروید، iOS و اکثر زبانهای برنامهنویسی کلاینت تولید کنند.
مستندات قابل خواندن و بهروز شده
هر دو قالب YAML و JSON به راحتی قابل خواندن و تغییر هستند و فایل توضیحات OpenAPI را میتوان در هر دو قالب نوشت. این یعنی هیچ زبان برنامهنویسی خاص یا فریمورکی برای اعمال تغییرات نیاز نیست. همانطور که میدانید، مستندات تاریخ مصرف گذشته یا نقص در توسعه و پیادهسازی API به هیچ وجه قابل قبول نیست. چون OpenAPI یک فایل است، حتی مستندات داخلی API همواره به روز میشوند. چراکه تمام دستورالعمل OpenAPI در یک قالب تهیه شده و چندین ابزار از جمله ابزارهای تولید مستندات به طور خودکار آن را پردازش میکنند.
استاندارد جاری صنعت
در حال حاضر OpenAPI استاندارد اصلی برای توصیف API است. این یعنی هر کاربری میتواند از طریق یک API که از این دستورالعمل استفاده میکند، به سرویسها دسترسی داشته باشد.
OpenAPI به دلیل زیر بهتر از سایر روشهای توصیف API است:
- مستقل از زبان و رابط کاربری استاندارد برای توصیف APIهای RESTful
- توسط ماشینها و کاربران قابل خواندن است.
- کاربران به مستندات اضافه، کد منبع یا ترافیک مصرفی برای درک قابلیتهای سرویس نیاز ندارند.
به این ترتیب کاربران میتوانند APIهای کاربرپسند، سازگار و قابل اتکاء بسازند و به راحتی با سرویسهای ریموت تعامل داشته باشند.
چه کسانی از OpenAPI استفاده میکنند؟
در این قسمت برخی از حوزههایی که از فناوری OpenAPI بهره میبرند را نام میبریم:
کسبوکارهای آنلاین
فناوری OpenAPI به کسبوکارها اجازه میدهد تا به صورت خود را توسعه دهند تا با نیازهای مشتریان همگام باشند.
رسانهها
رسانههایی مانند توییر از دستورالعمل OpenAPI برای APIهای خود استفاده میکنند تا اطلاعات سریعتر و بهتر در اختیار دیگران قرار دهند.
دولت
دولتها میتوانند با استفاده از دستورالعمل OpenAPI خدمات و اطلاعات خود را راحتتر و به شیوههای نوین در اختیار مردم بگذارند.
کی از OpenAPI استفاده کنیم؟
یکی از دغدغههای توسعهدهندگان برای توسعهدهندگان API مستندات ناقص و تاریخ مصرف گذشته است. یک API که به خوبی مستندسازی نشده باشد را به سختی میتوان یکپارچه کرد. با این حال بسیاری از توسعهدهندگان مستندات خود را ناقص مینویسند یا اصلا نمینویسند.
OpenAPI با ساده کردن فرایند تولید مستندات به صورت خودکار همواره مطابق با معماری API است، کار توسعهدهندهها را آسان کرده است. همچنین از آنجایی OpenAPI توسط ماشین قابل خواندن است، امکان استفاده از ابزارهای خودکار را فراهم میآورد. به این ترتیب توسعهدهندگان میتوانند زمان کمتری را صرف مستندسازی کنند و بیشتر به کد زدن مشغول شوند. بنابراین بهترین زمان برای استفاده از OpenAPI در هر پروژه و در ابتدای کار است.
هر چند مستندسازی مهمترین خروجی OpenAPI است، اما مواد دیگری نظیر یکپارچهسازی مداوم نیز از وجود فایل OpenAPI بهره میبرند.
در استفاده از OpenAPI این موارد را مد نظر داشته باشید
استفاده از الگوهای REST
از الگوهای آشنایی مانند REST برای توسعه API بهره ببرید تا درک آن برای توسعهدهندگان دیگر راحتتر باشد. سه راهکار اصلی در این الگوها به ترتیب زیر هستند:
- API را حول منابع سازمان دهید
- استفاده از متدهای HTTP برای تعامل
- اتکاء بر کدهای وضعیت HTTP
توضیحات کاربرپسند بنویسید
توضیحات API را با در نظر گرفتن کاربران در ذهن بنویسید و از نوشتن توضیحات پیچیده غیر ضروری و قرار دادن خطهای خالی پرهیز کنید.
تطابق نامها
در طول نوشتن مستندات و توسعه API، نام منابع را به طور ثابت و همواره یکسان استفاده کنید تا باعث ایجاد سردرگمی نشوند.
تحویل و یکپارچهسازی مداوم
به عنوان بخشی از گردش کار خود، از یکپارچهسازی مداوم بهره ببرید تا امکان تست کد در لحظه و به صورت خودکار فراهم شود.
OpenAPI همه جا است
همانطور که اشاره کردیم، پلتفرمهای بزرگ نظیر شبکههای اجتماعی با بهرهگیری از تواناییها و قابلیتهای OpenAPI خدمات خود را به شیوههای گوناگون در اختیار توسعهدهندگان قرار داده و با مشارکت در پروژههای مختلف، طیف کاربران خود را گسترش میدهند. این موضوع اهمیت استفاده از OpenAPI در طراحی و توسعه محصول را نشان میدهد. کسبوکارهای بزرگ و کوچک میتوانند با استفاده از OpenAPI روشهای جدیدی برای ارتباط با کاربران ابداع کنند. بنابراین، حرکت به سمت OpenAPI نه یک انتخاب، بلکه به زودی یک اجبار برای بقا در اکوسیستم دیجیتال خواهد بود.