API مخفف رابط کاربردی برنامهنویسی بوده و مجموعهای از پروتکلهایی است که به منظور ساخت و یکپارچهسازی نرمافزار استفاده میشود. API اجازه میدهد تا محصول یا خدمات شما با سایر محصولات و خدمات دیگر، ارتباط برقرار کند بدون اینکه بداند چطور آنها برنامهنویسی شدهاند. این امر میتواند توسعهی برنامه، صرفهجویی در وقت و هزینه را برای شما آسان کند. هنگامی که محصولات و نرمافزارهای جدیدی را طراحی کرده و آن ها را مدیریت میکنید، API به شما انعطافپذیری و آزادی عمل میدهد و فرصتهایی برای ایدههای جدید فراهم میکند.
API مخفف کلمه”Application Programing Interface” به معنای رابط برنامهنویسی کاربردی است. واسطهای نرمافزاری است که به دو برنامه اجازه میدهد که با یکدیگر ارتباط داشته باشند. هر بار که از یک برنامه مثل اینستاگرام استفاده میکنید یا یک پیام ارسال میکنید و یا حتی وضعیت تلفن خود را بررسی میکنید، در حقیقت از یک API استفاده میکنید.
API چیست و چه کاربردی دارد؟
APIها معمولا به عنوان یک قراردادی که بین دو طرف به امضا رسیده، تصور میشوند. API نحوهی ادغام اجزای جدید یک برنامه را برای برنامهنویسان ساده کرده و همچنین به تیمهای تجاری و IT کمک میکند. در پاسخ به تغییر بازارهای دیجیتالی، باید بگوییم جایی که رقبای جدید میتوانند کل صنعت موجود را با یک برنامهی جدید تغییر دهند، نیازهای تجاری نیز به سرعت در حال تغییر هستند.
پس برای حفظ رقابت، پشتیبانی از توسعهی سریع و بهکارگیری خدمات نوآورانه بسیار مهم است. API روشی ساده برای اتصال زیرساختهای شخصی شما از طریق توسعهی برنامه cloud-native است، ولی به شما امکان میدهد تا دادههای خود را با سایر مشتریان و کاربران خارجی به اشتراک بگذارید.
API های عمومی ارزش تجاری منحصر بهفردی دارند چون میتوانند چگونگی اتصال شما با شرکای خود و همچنین کسب درآمد بالقوه از سایر دادهها را سادهتر کرده و آن ها را گسترش دهند. API گوگل مپ یک نمونهی محبوب به حساب میآید.
بهطور خلاصه API ها این امکان را به شما میدهند که ضمن حفظ امنیت و کنترل، بتوانید دسترسی به منابع خودد را باز کنید. تمام امنیت API در مورد نحوهی مدیریت خوب آن است. اتصال به APIها را میتوان با ایجاد برنامههایی که داده یا عملکردی را با استفاده از همین API ها در معرض مصرف قرار گرفتند، با یک پلتفرم ادغامشدهی توزیعکننده که همه چیز را به هم متصل میکند، انجام داد.
تاریخچهای مختصر از API
APIها دقیقا مدت زمان کوتاهی قبل از رایانههای شخصی بهوجود آمدند. در آن زمان یک API به عنوان کتابخانهای برای سیستم عاملها مورد استفاده قرار میگرفت. API ها معمولا بهصورت محلی کار میکردند و گاهی اوقات هم پیامها را بین اصلیها منتقل میکردند. پس از گذشت نزدیک به ۳۰ سال APIها از محیط محلی خود خارج شده و در اوایل سال 2000 آن ها در حال تبدیل شدن به یک فناوری مهم از راه دور بودند.
یک نمونه از API
هنگامی که از یک برنامه در تلفن همراه خود استفاده میکنید و اینترنت گوشی روشن باشد، برنامه به اینترنت وصل شده و دادهها را به یک سرور ارسال میکند. سپس سرور آن داده را بازیابی و تفسیر کرده و آن را به گوشی شما ارسال میکند. حال آن برنامه دادههای دریافتی را تفسیر کرده و اطلاعات مورد نظر خود را به روشی که قابل خواندن باشد، به شما ارائه میدهد.
این همان چیزی است که یک API دارد و همهی آن ها از طریق API اتفاق میافتد. برای درک بهتر موضوع مثالی میزنیم. تصور کنید که در یک رستوران روی یک میز نشستهاید که روی آن منو قرار دارد. آشپزخانه بخشی از این سیستم است که غذای شما را آماده میکند. در اینجا مشااهده میکنیم که چیزی بین شما و آشپزخانه وجود ندارد که ارتباطتان با یکدیگر را برقرار کرده تا غذای شما را آماده کنند.
اینجاست که پیشخدمت وارد میشود. در اصل پیشخدمت همان API است که درخواست شما را میگیرد و به آشپزخانه اطلاع میدهد تا چه غذایی آماده کنند. سپس پیشخدمت برگشته و پاسخ را به شما که همان غذا است را به شما تحویل میدهد.
اکنون یک مثال دیگر از API در دنیای واقعی را بررسی خواهیم کرد. شما حتما با جستجوی پروازها بهصورت آنلاین آشنا هستید و دقت دارید که . دقیقا مثل منوی رستوران اینجا هم دارای گزینههایی است که باید آن را انتخاب کنید . تعیین مقصد یا شهر موردنظر و تاریخ رفت و برگشت را باید انتخاب کنید.
اکنون گمان و فرض میکنیم که شما داخل یک وبسایت هواپیمایی هستید. شما با آن ها از طریق سایت ارتباط برقرار کرده و به پایگاه دادهی آن ها دسترسی پیدا میکنید. شما علاوه بر انتخاب مقصد باید تاریخ رفت و برگشت و نوع کلاس کابین را تعیین کنید. حتی مشاهده میکنید که کدام صندلیها موجود بوده و هر کدام چه قیمتی دارند. این وبسایت دقیقا کار همان API را انجام داده و رابط بین شما و آن شرکت هواپیمایی است که انتخابهای شما را به سرور آن ها ارسال کرده و پاسخ دریافتی را به شما میدهد.
آن چیزی که یک API ارئه میدهد لایهای از امنیت است
دادههای شما هرگز بهطور کامل در اختیار سرور قرار نمیگیرد و همچنین سرور هم نمیتواند بهطور کامل به اطلاعات شما دسترسی پبدا کند. در عوض هر کدام با بستههای کوچکتری از دادهها ارتباط برقرار کرده و فقط آنچه را که لازم است و نیاز دارند (مانند اطلاعات مربوط به یک سفارش) به اشتراک میگذارند.
API آنقدر ارزشمند است که بخش بزرگی از درآمد بسیاری از مشاغل را تشکیل میدهد. شرکتهای بزرگی چون گوگل، آمازون و ebay از معدود شرکتهایی هستند که از APIهای خود کسب درآمد میکنند. آنچه که اقتصاد API به آن اشاره دارد همین بازار API است.
API مدرن
با گذشت سالها آنچه که از API توصیف میشود این است که غالبا هر نوع اتصال عمومی به یک برنامه را شامل میشود. اما API مدرن و پیشرفته برخی ویژگیها را به کار گرفته که آن ها را بسیار ارزشمند و مفید میسازد. APIهای مدرن که مطابق با استانداردها هستند ( به طور معمول HTTP و REST ) سازگار با توسعهدهندگان بوده و بهراحتی در دسترس و قابل فهم هستند.
آنها برای مخاطبان خاصی مثل توسعهدهندگان موبایل طراحی و به گونهای نسخهساری شدهاند که میتوانند انتظارات خاصی از نگهداری و طول عمر این API را داشته باشند. زیرا آن ها بسیار استاندارد بوده و دارای یک نظم و انضباط بسیار قوی برای امنیت و نظارت عملکرد هستند. API مدرن مانند هر قطعهی دیگر از نرمافزارهای تولید شده، دارای چرخهی توسعهی نرمافزاری مربوط به خود (SDLC) برای طراحی، آزمایش، ساخت، مدیریت و نسخهسازی است. همچنین این API های مدرن به خوبی برای مصرف و نسخهسازی بهینه شدهاند.
نوآوری با API
APIهای شما وقتی در حالت شریکی یا عمومی قرار میگیرند، میتوانید:
کانالهای جدید درآمدی را ایجاد کرده و یا کانالهای موجود را گسترش دهید.
دسترسی به نام تجاری خود را گسترش دهید.
نوآوری آزادانه یا بهبود بهرهوری را از طریق توسعه و همکاریهای بیرونی افزایش دهید.
فرض میکنیم که یک توزیعکنندهی کتاب برنامهای را طراحی کرده تا به کمک آن افراد بتوانند کتابهای خود را بهراحتی از قفسههای کتابخانه پیدا کنند. این تجربهی بهبودیافته میتواند مشتریان زیادی را به سمت کتابخانه هدایت کرده و یک نوع کانال درآمد را ایجاد کند. حال شاید شخص ثالثی پیدا شده و با توسعه دادن این برنامه به مردم اجازه میدهد تا کتاب خود را مستقیما از توزیعکنندهی کتاب خریداری کنند. همین میتواند یک کانال درآمدی برای توزیعکنندهی کتاب ایجاد کند.
اشتراک API با کل جهان میتواند اثرات مثبتی بههمراه داشته باشد. هر مشارکتی که در این زمینه داشته باشید فرآیندهای بازاریابی شما به سرعت گسترش پیدا میکند. ایجاد یک تکنولوژی مثل یک API عمومی برای همه، توسعهدهندگان را ترغیب میکند تا اکوسیستم برنامههایی را در اطراف API شما بسازند.
بیشتر افراد از تکنولوژی شما استفاده خواهند کرد و این کار یعنی افراد بیشتری تمایل دارند تا با شما کار کنند. زمانی که شما یک فناوری را عمومی میکنید، به نتایج غیرمنتظره و جدیدی دست پیدا خواهید کرد. گاهی اوقات این نتایج کل صنعت را مختل میکند. به عنوان مثال برای یک شرکتی که کتاب توزیع میکند، رقبا بهراحتی میتوانند با اجاره دادن کتابها، کار این شرکت را مختل کنند. APIهای مشترک و عمومی به شما کمک میکنند تا از دانش و خلاقیت جامعهی توسعهدهندگان استفاده کنید. ایدههای جدید از هرکجا که فکرش را کنید، ساخته شده و همینطور شرکتها باید از تغییرات بازار خود مطلع باشند. APIها کمک بسیاری میتوانند به شما ارائه دهند.
API های از راه دور
APIهای از راه دور برای تعامل در یک شبکه ارتباطی طراحی شدهاند. منظور ما از عبارت “از راه دور” منابعی هستند که توسط API تغییر پیداکرده و در جایی غیر رایانه قرار د داده شدند. از آنجا که پراستفادهترین شبکهی ارتباطی اینترنت است بیشتر APIها بر اساس استانداردهای وب طراحی شدهاند.
همهی APIهای از راه دور، API وب نیستند. اما فرض کنیم تمام APIهای وب، از راه دور باشند. APIهای وب برای دریافت پیامهای خود معمولا از HTTP استفاده میکنند و تعریفی از ساختار پیامهای پاسخی ارائه میدهند. این پیامهای پاسخگونه معمولا به صورت فایل XML یا JASON هستند. هر دو فایل XML و JASON فرمتهای ارجح هستند زیرا دادهها را به روشی ارائه میکنند که انجام تغییرات روی آنها برای سایر برنامهها آسانتر است.
برای بهبود API چه اقداماتی انجام شده است؟
از آنجا که APIها در سرتاسر وب فراگیر شدهاند، تلاشهای زیادی انجام شده تا طراحی آنها کمی سادهتر و اجرای آنها مفیدتر باشد.
یک شیء کوچک به نام SOAP و تعداد زیادی REST
با گسترش APIهای وب، مشخصاتی از پروتکلها ایجاد شدهاند تا به استانداردسازی مبادلهی اطلاعات کمک کنند. پروتکل به یک شیء ساده که اصطلاحا به آن صابون یا SOAP میگویند، دسترسی دارد. APIهایی که با SOAP طراحی شدهاند از XML برای قالب پیام خود استفاده کرده و درخواستها را از طریق HTTP یا SMTP دریافت میکنند. SOAP باعث میشود تا برنامههایی که در محیطهای مختلف اجرا میشوند یا به زبانهای مختلف نوشته میشوند، اطلاعات را به اشتراک بگذارند.
مشخصهی دیگر REST نام دارد که مخفف عبارت Representational State Transfer بوده و در اصل یک نوع معماری بهحساب میآید. APIهایی که به معماری REST پایبند هستند RESTful نامیده میشوند. REST در یک روش اساسی با SOAP متفاوت است. اینکه SOAP یک پروتکل بوده ولی REST یک سبک ممعماری است. این یعنی هیچ استاندارد رسمی برای APIهای وب RESTful وجود ندارد. APIها تا زمانی با ۶ راهنمایی یک سیستم RESTful که در زیر آورده شده مطابقت نداشته باشند، دارای محدودیت هستند:
معماری سرویسدهنده: معماری و اساس REST از منابع، مشتریان و سرورها تشکیل شده که درخواستها را از طریق HTTP انجام میدهد.
عدم تابعیت: هیچ محتوایی از مشتری در سرورها ذخیره نمیشود. در عوض اطلاعات مربوط به session نگهداری میشود.
حافظه پنهان: حافظه پنهان میتواند برخی نیازهایی که از تعامل سرویس دهنده و سرور بدست آمده را از بین ببرد.
سیستم لایهای: لایههای اضافی میتوانند به عنوان یک واسطه بین مشتری و سرور قرار بگیرند. به علاوه این لایهها ویژگیهای دیگری مانند تعادل بار، حافظه پنهان مشترک و یا امنیت را ارائه میدهند.
کد بر اساس تقاضا(اختیاری): سرورها میتوانند با انتقال کد اجرایی عملکرد مشتری را گسترش دهند.
رابط یکنواخت: این محدودیت اساسی در طراحی APIهای RESTful است و شامل 4 جنبه زیر میباشد:
شناسایی منابع در درخواستها: منابع در درخواستها مشخص شده و از اطلاعاتی که به مشتری ارائه میشوند جدا هستند.
دستکاری کردن منابع از طریق نمایندگی: مشتری فایلهایی را دریافت میکند که منابع را نشان میدهند. این نمایندگیها باید از اطلاعات کافی برخوردار بوده تا بتوانند عملیات اصلاح یا حذف را انجام دهند.
پیامهای خود توصیفی: هر پیامی که به مشتری برمیگردد حاوی اطلاعات کافی برای توصیف نحوهی پردازش مشتری میباشد.
هاپرمدیا(Hypermedia)به عنوان یک موتور کاربردی برنامه: پس از دسترسی به یک منبع، مشتری REST باید بتواند از طریق لینکهای پیوندی سایر اقدامات موجود را کشف کند.
شاید به نظر شما این محدودیتها زیاد باشد ولی سادهتر از پروتکل تعیینشده هستند. به همین دلیل APIهای RESTful بیشتر از SOAP گسترش پیدا میکنند.
در سالهای اخیر مشخصات و ویژگیهای OpenAPI به عنوان یک استاندارد مشترک برای تعریف APIهای REST پدید آمده است. OpenAPI برای توسعهدهندگان راهی برای ایجاد واسطهای REST API بهوجود میآورد تا کاربران بتوانند آنها را بهراحتی درک کنند. یکی دیگر از استانداردهای API، GraphQL است که یک زبان پرسوجو و زماندهی اجرای سرور بوده و جایگزینی برای REST محسوب میشود.
GraphQL دقیقا همان دادههایی که از آن ها درخواست میشود را در اختیار مشتریان قرار میدهد. اگر GraphQL را به عنوان یک گزینهی ججایگزین درنظر بگیریم، REST به توسعهدهندگان این امکان را میدهد که درخواستهایی ایجاد کنند که دادهها را از چندین منبع در یک ارتباط API دریافت کنند.
SOA در مقابل معماری میکرو سرویس
SOA مخفف عبارت service-oriented architecture به معنی معماری سرویسگرا میباشد. دو نوع رویکرد معماری که بیشتر از APIهای از راه دور استفاده میکنند، معماری سرویسگرا(SOA) و معماری میکرو سرویس هستند. SOA قدیمیتر بوده که به منظور بهبود برنامههای یکپارچه وارد عمل شد. از طریق SOA برخی از توابع را میتوان از طریق برنامههای مختلف که بهراحتی به یکدیگر متصل میشوند را بدست آورد.
این در حالی است که SOA از یک معماری یکپارچه، سادهتر بوده و اگر تعامل مؤلفه بهطور واضح درک نشود مشکلاتی را بههمراه خواهد داشت که SOA در حال رفع کردن آنهاست و این خطرات دوباره بهوجود میآیند. معماری میکرو سرویس در استفاده از خدمات تخصصی و کاملا مشترک، شبیه به الگوهای SOA است. در صورتی که آنها در حال نابود کردن معماریهای سنتی هستند.
خدمات موجود در خدمات معماری میکرو سرویس از یک چارچوب پیامرسان مشترک مانند APIهای RESTful استفاده میکنند. آن ها از APIهای RESTful برای برقراری ارتباط با یکدیگر بدون اینکه دادههای دشوار و لایههای اضافی تبادل شوند، استفاده میکنند. استفاده از APIهای RESTful امکان تحویل سریعتر ویژگیها و بروزرسانیهای جدیدتر را فراهم میکند.
انواع API
APIبه سه دسته تقسیم شده و برای انواع خاصی از برنامهها استفاده میشود:
APIهای باز یا عمومی که بدون محدودیت خاصی در دسترس همه قرار گرفته است.
APIهای شریکی که به صورت عموم در دسترس نبوده و برای بدست آوردن آن ها، نیاز به داشتن امتیاز خاصی است.
مجموعهای از API باز و شریکی که مانند نوک کوه یخ بهطور واضح قابل مشاهده بوده و برای ارتباطهایی که فراتر از مرزهای شرکت هستند، استفاده میشود. آنها معمولا در معرض پورتال API عمومی قرار گرفته تا توسعهدهندگان بتوانند بهراحتی به آن ها دسترسی داشته باشند. همچنین میتوانید به APIهای شریک نیز دسترسی پیدا کنید.
APIهای داخلی که به عنوان یک API خصوصی، معمولا کمتر شناخته شده هستند در معرض سیستمهای داخلی قرار گرفتهاند. این APIها در تیمهای مختلف توسعهدهندهی داخلی برای بهرهوری بهتر و استفاده مجدد از خدمات، مورد استفاده قرار میگیرند.
یک سرویس میتواند بدون اینکه تاثیری در معماری بگذارد، جایگزین شده، ارتقاء یافته و یا کنار گذاشته شود. این معماری ساده به بهینهسازی منابع ابری یا توزیعشده کمک کرده و از مقیاسپذیری پویا برای خدمات فردی پشتیبانی میکند.
- ۰ ۰
- ۰ نظر