آموزش وب سرویس (قسمت ششم)، انواع ای پی آی
مجموعه API چیست و چه کاربردی دارد؟
انواع ای پی آی قسمت ششم از آموزش وب سرویس ها : در این مجموعه یازده قسمتی، توضیحات مفصلی درباره ای پی آی ها داده شده است. شما با تماشای این مجموعه، اطلاعات بیشتری را درباره وب سرویس ها و بازارهای مربوط به آنها بدست خواهید آورد. پس ما را تا پایان این سری از ویدیو کلیپها دنبال کنید و به طور کامل با مفاهیم زیر آشنا شوید:
- مفهوم دقیق اَپی (وب سرویس) چیست؟ و نحوه عملکرد آن به چه صورت است؟
- ۱چرا باید روی ای پی آی ها سرمایه گذاری شود؟
- چطور یک ای پی آی ها را به یک محصول تبدیل کنیم؟
- چطور می توان امنیت ای پی آی ها را تامین کرد؟
- چرا طراحی اولیه یک ای پی آی مسئله مهمی است؟
- چگونه یک ای پی آی بسازیم؟ و چگونه اپی را مصرف کنیم؟
در قسمتهای گذشته پیرامون این مطالب صحبت کرده ایم:
- ای پی آی چیست و چه کاربردی دارد؟
- نحوه عملکرد ای پی آی ها به چه صورت است.
- انعطاف پذیری سازمانی به چه معنی است و نقش ای پی آی در انعطاف پذیری سازمانی چیست؟
- تاثیر ای پی آی بر فرهنگ سازمانی
- اقتصاد ای پی آی (api)
قسمت ششم: معرفی انواع ای پی آی
دسته بندی ای پی آی ها به روشهای مختلف و بر اساس رویکردهای گوناگونی صورت میگیرد. در این قسمت به برخی از این رویکردها و دسته بندیها میپردازیم.
ابتدا میتوانیم api ها را براساس نوع مخاطبینشان دسته بندی کنیم:
دسته اول، مجموعه توسعه دهنده گان ناشناخته (ای پی آی های عمومی یا public APIs یا Open APIs):
در این دسته، مجموعه بزرگی از توسعه دهندههای ناشناخته وجود دارند که از ای پی آی هایی که در اختیار عموم قرار دارد، استفاده میکنند. در واقع مالک وب سرویس نمیداند که چه کسانی در حال استفاده از این ای پی آی ها هستند و یا در آینده میخواهند از آن استفاده کنند. در واقع هر توسعه دهندهای میتواند این API را در اپلیکیشن خود بکار بگیرد. برای مثال API گوگل مپ (GoogleMap) یکی از نمونههای اپن ای پی آی است که تعداد زیادی از توسعه دهندهها از خدمات آن استفاده میکنند.
مجموعه توسعه دهندگان شناخته شده (ای پی آی خصوصی یا پارتنر):
در این مجموعه ارائه دهنده API از قبل میداند که مصرف کنندگان این وب سرویس چه کسانی خواهند بود. ممکن است مخاطبین آنها شرکای تجاری او، توسعه دهندگان داخلی و سازمانی و یا کارمندان داخلی خود ارائه دهنده باشند. این دسته از api ها تعداد محدود و کوچکی از افراد را شامل خواهند شد.
با دسته بندی API ها به دو گروه شناخته شده و ناشناخته، در حقیقت ارائه دهندگان میفهمند که با چه گروه و چه تعداد از مخاطبین روبرو هستند و نسبت به آن میتوانند قوانین مناسب با کار خود را وضع کند، و روند انتشار API را سازماندهی کند.
دسته بندی دوم، بر اساس انواع کاربری ای پی آی صورت میگیرد:
در این دسته بندی انواع ای پی آی را براساس نوع قوانینی که برای استفاده توسعه دهندهها وضع شده است، طبقه بندی میکنیم:
ای پی آی شبکه یا API Web:
این نوع از ای پی آی پی وب سرویس هایی هستند که در شبکه قرار میگیرند و در اختیار کسانی که میخواهند به این شبکه متصل شوند و قصد دارند تا از این وب سرویس در داخل اپلیکیشنهای خود استفاده کنند هستند.
در این نوع api در یک سمت ارائه دهنده و در سمت دیگر مصرف کننده وب سرویس وجود دارد؛ که مصرف کننده آن از طریق شبکه به این وب سرویس دسترسی پیدا میکند. البته به یاد داشته باشیم منظور از شبکه، تنها شبکه جهانی اینترنت نیست. یعنی این دسته از ای پی آی ها میتوانند در شبکههای داخلی یا هر نوع شبکه دیگری نیز وجود داشته باشند.
ای پی آی محصول یا product APIs:
در این دسته در واقع یک محصول وجود دارد که در داخل آن یک api بکار رفته است. در این نوع از api ها، افراد مختلفی میتوانند این محصول را خریداری نموده و به صورت رایگان دانلود نمایند و از ای پی آی استفاده کنند.
در این سیستم، هر بار که این محصول به شبکه متصل میشود در حقیقت یک کپی از این وب سرویس را در شبکه قرار داده و از آن استفاده میکند.
برای مثال سیستم sugarCRM یک ای پی آی محصول است که برای بخش مدیریت روابط مشتریان، توسط شرکتهای زیادی استفاده میشود. در این سیستم ای پی آی هایی برای دسترسی کاربران به لیست دادههای مختلف (مانند اطلاعات مشتریان و …) وجود دارد. شرکتهایی که از این نرم افزار (محصول) استفاده میکنند، موقع پیاده سازی آن میتوانند این ای پی آی را در اختیار کاربرانی که نیاز به این اطلاعات دارند، قرار دهند.
ای پی آی مرورگر یا browser APIs:
هر کدام از مرورگرهایی که از آنها استفاده می.کنید (کروم، فایرفاکس، سافاری و …) دارای ای پی آی های مختلفی در داخل خود هستند که میتوان به صورت مستقل از آنها استفاده کرد.
به مرور زمان و با زیاد شدن انواع مرورگرها، لازم بود تا ای پی آی هایی در خود مرورگرها قرار بگیرند. تا با کمک آنها، اپلیکیشنهایی که (در آینده) توسعه مییابند بتوانند با استفاده از html و یا جاوا اسکریپت روی همان مرورگرها اجرا شوند. با این روش اپلیکیشنها به راهی برای دستیابی به اجزاء سیستمی که روی آن قرار دارند دسترسی خواهند داشت. امروزه در تمامی مرورگرها ای پی آی هایی برای دسترسی به اجزاء یخت افزاری یا نرم افزارهای دستگاه (مانند میکروفون، مکان نما، و یا باطری و …) وجود دارد. این موضوع باعث میشود تا دست توسعه دهنده برای استفاده از قابلیتهای مختلفی که در سیستم وجود دارد بسیار باز باشد و بتواند خیلی از وب سرویس ها را با هم ترکیب نماید.
ای پی آی های استاندارد یا standard APIs:
در بسیاری از مواقع شرکتها یا سازمانها یکسری api های استاندارد را برای خود تعریف میکنند. در این نوع از این ای پی آی ها، وب سرویس های دیگر، برای بکارگیری آنها باید طبق همان استانداردها عمل کنند.
در این نوع از ای پی آی ها، شرکتهای مختلف برای خود یک سری استانداردهای خاص تعریف کرده اند که دیگران نیز موظف به تبعیت از آنها بوده و به آن پایبند هستند. این استانداردها میتوانند توسط یک سازمان، یا بنیاد خاص و یا بین یک گروه تعریف شده باشد. این api نیز مانند ای پی آی محصول است. به این صورت که پیاده سازیهای مختلف از یک api از یک فرمت خاص تبعیت میکند.
استاندارد api طرح داده گوگل، یک نمونه از ای پی آی های استاندارد است که میتواند در اپراتورهای مختلف دادههای موبایل کارایی داشته باشد. در اینجا اپراتورهای مختلف با دادههای مختلف از این ای پی آی ها استفاده میکنند.
ای پی آی سیستمهای نهفته یا Embedded system:
در حال حاضر شاهد فعالیتهای زیادی روی این دسته از api ها هستیم. فرض کنیم که یکی از تولید کنندگان تلفن، سخت افزار جدیدی (مانند سنسور دما) را برای تلفن طراحی کرده که هیچ استاندارد خاصی برای استفاده از آن وجود ندارد. در بسیاری از مواقع، اینگونه تولید کنندگان میتوانند api مورد نظر را در خود قطعه سخت افزار قرار دهند، تا به سادگی در دسترس مرورگرها باشد. این نوع از ای پی آی، یک api اختصاصی است که میتواند با انواع دیگر ترکیب شود و یا در اپلیکیشنهای جدید برای مقاصد دیگری استفاده شوند.
انواع ای پی آی بر اساس شیوه معماری:
- معماری رست فول معمولی: یکی از رایج ترین انواع معماری درای پی آی ها میباشد که غالباً در وب سرویسها کاربرد دارند.
- معماری RPC: یک پروسه فراخوانی از راه دور است که از روی پروسه XML و SOAP شناخته می شوند.
- معماری push یا stream.
- معماری graphQL: این شیوه در ابتدا توسط فیسبوک ایجاد شد، ولی امروزه توسط دیگران نیز مورد استفاده قرار میگیرد. این شیوه ترکیبی از رست و prc ها هستند.
- معماری native browser: این شیوه مربوط به api های مرورگر میشوند.
- ای پی آی های غیر مستقیم:
ای پی آی های غیر مستقیم یا SDK:
این دسته از api ها برای استفاده مستقیم توسعه دهندهها مناسب نیستند و در عوض از طریق SDK ها یا کیتهای توسعه نرم افزاری مورد استفاده قرار میگیرند. یکی از نمونههای این api، سیستم Evernote است. اگر بخواهید که اپلیکیشنی بسازید که از Evernote استفاده کند، حتما باید از SDK ای که Evernote ارائه میدهد استفاده کنید. به عبارت دیگر هیچ ای پی آی وجود ندارد که توسعه دهنده به وسیله آن به Evernote متصل شود.
کیتهای توسعه نرم افزاری یا SDK ها در حقیقت یک لایه فن آوری است که توسعه دهندهها میتوانند از آن برای راحتتر شدن بکارگیری API ها استفاده کنند. به عبارت بهتر وقتی که یک SDK وب سرویس را دور میزند و مستقیما به زیرساختها متصل میشود به آن ای پی غیر مستقیم گفته میشود.
به طور کلی تمام شیوههای ذکر شده در بالا را میتوان با هم ترکیب نمود و به وسیله این کار یک اپلیکیشن خلاقانه و جدید ساخت.
دسته بندی دیگر ای پی آی ها بر اساس حوزه کاری APIs صورت میپذیرد:
ای پی آی تک منظوره یا Single Purpose – API:
این دسته، همان مفهوم پایهای از api را بیان میکند که همه با آن آشنا هستند. در اینجا یک مصرف کننده وب سرویس را داریم که تنها به یک منظور خاص از وب سرویس استفاده می کند.
ای پی آی تجمیعی aggregate api:
برخی از ارائه دهندهها به این نتیجه رسیده اند که در حال حاضر شرکتهای بسیاری مشغول به تولید api برای یک منظور خاص هستند. در ای پی آی های تجمیعی، یک api داریم که با تمام وب سرویس ها کار می کند. در اینجا دیگر مصرف کننده به سراغ api تجمیعی میآید و این api تمام کارهای لازم و خدمات درخواستی او را با ای پی آی های دیگر بر عهده میگیرد. به این کار نرمالیزه کردن api نیز گفته میشود.
ای پی آی میکروسرویس یا Microservice API:
یکی از ضعفهای api آن است که ای پی آی ها ذاتا توان ذخیره سازی در حافظه نهان را ندارند و نمیتوانند گردشها و پروسههای پیچیده را مدیریت کنند. به همین دلیل برخی از ارائه دهندهها، نسل جدیدی از ای پی آی ها را با عنوان api های میکروسرویس ارائه نموده اند. در این مورد خود سرویس میتواند با چندین ای پی آی در تماس باشد (مانند api های تجمیعی). البته در میکروسرویسها، هر ای پی آی کار متفاوتی را برعهده دارد. ای پی آی میکروسرویس در حقیقت انسجام بین تمام api های مرتبط را با یکدیگر حفظ می کند.
در قسمت بعد درباره دلایل انتشار یک API مطالبی مفیدی را برای شما ارائه می کنیم. پس با ما همراه باشید…