(آشنایی با انواع API)با در نظر گرفتن این نکته که API سازوکاری است که از آن طریق تعامل سیستم با سیستم به جای تعامل کاربر با سیستم صورت میگیرد، میتوان دستهبندیهای مختلفی برای ایپیآیها در نظر گرفت که عبارتند از:
– ایپیآی سختافزاری:
زمانی که مثلاً با اجرای یک گیم حرفهای فشار زیادی روی سیستم خود میآوریم، میبینیم که فن سیستم شروع به تند چرخیدن میکند و این به دلیل آن است که سیپییو نسبت به حالت عادی در معرض فشار بیشتر است و بالتبع داغ شده است و باید خنک گردد که این سازوکار از طریق ارتباط مابین ایپیآیهای سختافزاری صورت میگیرد .
– ایپیآی سیستمعاملی:
پیش از این در قالب مثال توسعهٔ یک نرمافزار دسکتاپ توضیح دادیم که ایپیآی مرتبط با یک سیستمعامل همچون ویندوز به چه شکل کار میکند.
– ایپیآی زبانهای برنامهنویسی:
زبانی همچون جاوا یک هستهٔ اصلی دارد که شامل سینتکس این زبان، نحوهٔ ساخت متغیر، دیتا تایپها و … میشود اما در کنار آنها صدها کلاس مختلف توسط توسعهدهندگان این زبان عرضه شده که تحت عنوان Java API شناخته میشوند که فیچرهای تکمیلی این زبان را در دسترس دولوپرها قرار میدهند.
– کیتهای توسعهٔ نرمافزار:
Software Development Kit یا به اختصار SDK نیز نوعی دیگی از ایپیآیها است که توسط شرکتهای مختلفی همچون گوگل، فیسبوک و … عرضه میشوند تا دولوپرها با استفاده از این کیتها بتوانند اقدام به توسعهٔ نرمافزار کنند که از آن جمله میتوان به Android SDK اشاره کرد.
– ایپیآی تحت وب (وب سرویس):
این نوع ایپیآی یکی از متداولترین و کاربردیترین انواع ایپیآی است که ادامه تمرکز روی همین مقوله خواهیم کرد. ایپیآی تحت وب یا اصطلاحاً Web API به هر پروتکلی گفته میشود که از طریق شبکهٔ اینترنت و وب تعامل مابین اپلیکیشنهای مختلف را امکانپذیر سازد و از همین روی Web Service نیز نامیده میشود (وب اپلیکیشنی که محتوای خود را از طریق چندین و چند ایپیآی مختلف تأمین کند اصطلاحاً Mashup نامیده میشود.) زمانی که پای ایپیآیهای تحت وب به میان میآید، باید با سازوکار پروتکل HTTP و HTTPS آشنا باشیم که برای این منظور توصیه میکنیم به دورهٔ رایگان وب چگونه کار میکند؟ مراجعه نمایید.
درآمدی بر انواع وب سرویسها
به طوری کلی، وب سرویسها را میتوان به دستههای GraphQL ،SOAP ،PRC و یکی از معروفترین آنها در حال حاضر REST دستهبندی کرد که در ادامه آنها را مورد بررسی قرار خواهیم داد.
– PRC:
این اصطلاح مخفف واژگان Programmable Remote Client است. این نوع وب سرویس در دو نوع مدل XML-RPC و JSON-RPC عرضه شده است و همانطور که از نام آنها مشخص است، مدل اول از فرمت اکسامال پشتیبانی میکند و مدل دوم از جیسون (نیاز به توضیح است که این وب سرویس امروزه کاربرد چندانی ندارد.)
– SOAP:
این اصطلاح مخفف واژگان Simple Object Access Protocol است که به منزلهٔ پروتکلی است که متد ارتباطی، نحوهٔ ارسال درخواست، دریافت پاسخ و همچنین فرمت پاسخها را تعیین میکند. به عبارتی، این نوع ایپیآی راهی است که از آن طریق سیستمها از طریق فرمتی که قابلدرک برای هر دو طرف کانکشن است میتوانند با یکدیگر ارتباط برقرار سازند (معمولاً درگاههای بانکی از این فرمت پشتبانی میکنند.)
– REST:
این اصطلاح که مخفف واژگان Representational State Transfer است بر خلاف موارد قبل یک پروتکل حساب نمیشود بلکه نوعی معماری است که نسبت به بقیه کاربرد آسانتری دارد و به همین دلیل هم هست که امروزه فراگیر شده است که برای کسب اطلاعات بیشتر، میتوانید به آموزش آشنایی با مفهوم RESTful API و مقالهٔ آشنایی با نحوهٔ استفاده از RESTful API در پایتون مراجعه نمایید.
– GraphQL:
استانداردی برای طراحی و توسعهٔ API است که به صورت اپنسورس توسط کمپانی فیسبوک توسعه داده شده است که در حقیقت در پاسخ به نقدهایی که به REST وارد است طراحی شده تا بتواند به عنوان راهکاری جامع و اثربخش در توسعهٔ ایپیآی مورد استفاده قرار گیرد.
به خاطر داشته باشیم که دیتا از طریق وب سرویسهای مختلف به اشکال گوناگونی میتواند رد و بدل شود که از جملهٔ مهمترین آنها میتوان به XML ،JSON و یا HTML اشاره کرد.
تقسیمبندی ایپیآیها از بُعد سطح دسترسی
علاوه بر تقسیمبندیهای فوق، Web API را میتوان از نقطه نظر سطح دسترسی (پرمیشن) به دستههای مختلفی تقسیمبندی کرد که عبارتند از:
– Open APIs:
این دست ایپیآیها که اصطلاحاً Public APIs نیز نامیده میشوند، بدون هیچگونه محدودیت در سطح دسترسی برای کاربرد B2C در اختیار دولوپرها قرار میگیرند که برای مشاهدهٔ لیستی از آنها، میتوانید به لینک Public APIs در گیتهاب مراجعه نمایید.
– Partner APIs:
این گروه از ایپیآیها صرفاً در اختیار کسبوکارهای به اصطلاح B2B و B2C است و همچون مورد قبل (Open APIs) هر دولوپری به آنها دسترسی ندارد و معمولاً پولی هستند.
– Internal APIs:
این گروه از ایپیآیها که تحت عنوان Private APIs نیز شناخته میشوند، صرفاً برای مصرف داخلی یک سیستم طراحی میشوند. به طور مثال، لیست مقالاتی که در سایدبار سمت چپ api.ir در معرض دید کاربران قرار میگیرد از طریق یک Private API (ایپیآی خصوصی) ایجاد شده که صرفاً برای استفاده توسط خودِ سایت api.ir توسعه داده شده است.
API Economy چیست؟
کسب درآمد از طریق عرضهٔ ایپیآی چیزی است که تحت عنوان API Economy شناخته میشود. پیش از این گفتیم که برخی ایپیآیها هستند که اصطلاحاً پابلیک (عمومی) میباشند و بالتبع شرکت عرضهکننده به صورت مستقیم نمیتواند از آنها کسب درآمد کند اما در مقابل برخی شرکتها هم هستند که از طریق عرضهٔ ایپیآی سرویسهای اختصاصی خود، به کسب درآمد میپردازند بدین شکل که مثلاً تا ده هزار ریکوئست در ماه رایگان است اما اگر به طور مثال اپلیکیشنی طراحی نمودهایم که تعداد کاربران زیادی دارد و بالتبع بار بیشتری روی سرورهای شرکت مذکور وارد میآورد، برای این منظور باید سرویس پریمیوم خریداری کنیم.
طراحی API
این نکته را همواره باید مد نظر قرار داد که طراحی API از پایه کار نسبتاً دشواری است که مراحلی پیچیده و بسیار تخصصی دارا است. برای آنکه یک تصویر کلی از پروسهٔ طراحی ایپیآی داشته باشیم، باید گفت که عموماً ایپیآیها با توجه به برخی الگوها و استانداردها ساخته میشوند تا تمامی توسعهدهندگان از سراسر دنیا بتوانند بدون سردرگمی از آنها استفاده کنند که بررسی این موضوع خارج از این بحث است.
تأمین امنیت API
اگر همه چیز به درستی و با دقت پیش برود، عرضهٔ API خطری امنیتی برای شما محسوب نمیشود اما نیاز به توضیح نیست که هرچه راههای ارتباطی با سرورهای خود را بیشتر کنید، راههای نفوذ به آن نیز افزایش مییابد و از آنجایی که برخی ایپیآیها به برخی از امکانات سرویس دسترسی میدهند که مثلاً تعامل با دیتای ذخیرهشده روی دیتابیس هم بخشی از آنها است و مسلماً از حساسیت بالایی برخوردار است، میتواند در صورت پیادهسازی غیراصولی خسارتهای زیادی به بار آورد که برای حل این قبیل مشکلات چندین راهکار وجود دارد.
سعی کنید API خود را بر روی سروری جداگانه و متفاوت از دیتابیسی که به آن متصل میشود راهاندازی کنید. همچنین اگر به کاربران خود امکان اضافه کردن و یا ویرایش اطلاعات را نیز میدهید، خود را برای مقابله با هر نوعی از Injection آماده کنید که برای کسب اطلاعات بیشتر، توصیه میکنیم به مقالات زیر مراجعه نمایید:
– آشنایی با مفهوم SQL Injection در زبان PHP
– XPath Injection:
آشنایی با آسیبپذیری داکیومنتهای XML
یکی دیگر از حملات سایبری خطرناک Distributed Denial of Service یا به اختصار DDoS نام دارد که نیاز دارید تا راهکارهای حفاظتی برای مقابله با این حملات را نیز رعایت کنید.مطالعه بیشتر