وب سرویس یا API چیست ؟

فرض کنید که اتومبیل شما دچار یک مشکل می شود و شما به یک مکانیک مراجعه میکنید. مکانیک برای اینکه بتواند ماشین شما را تعمیر کند، نیاز به یک سری وسایل دارد، برای مثال شما را برای خرید لنت ترمز به یک مغازه میفرستد، برای خرید روغن موتور به یک مغازه‌ی دیگر و… . در واقع کسب و کارهای دیگر به آن مکانیک کمک میکنند که کار خودش را بهتر انجام دهد و تمام کند.

یا به عنوان مثال دیگر فرض کنید که شما صاحب یک وبسایت هستید و میخواهید در منوی کناری سایت‌تان اطلاعات آب و هوا و یا اوقات شرعی را نمایش دهید. نکته‌ای که وجود دارد این است که خود شما بصورت مستقیم به این اطلاعات دسترسی ندارید و نمیدانید که آب و هوا در شهرهای مختلف ایران به چه صورت است.

برای داشتن این امکان در سایت‌تان، شما از سایت دیگری استفاده میکنید و این امکان را در سایت خود نمایش میدهید. در واقع یک سایت دیگر به شما کمک میکند و اطلاعات آب و هوا، اوقات شرعی و… را به شما میدهد که شما در سایت‌ خود نمایش دهید.

در هر دوی این مثال ها، جایی وجود داشت که به شما کمک میکرد که کاری که میخواهید انجام دهید را بهتر انجام دهید و در واقع به شما امکاناتی را میداد. 

API چیست ؟

API مخفف Application Programming Interface می‌باشد که میتوان آن‌را رابط برنامه نویسی نرم افزار معرفی کرد. شما نمی توانید یک API را به راحتی اینکه این کار را در Notepad انجام می دهید، اجرا کنید. به این دلیل که عموما API ها برای کاربرانی مثل شما و من مخفی هستند. API ها قسمت هایی از کدهای نوشته شده به وسیله برنامه نویسان هستند که دقت زیادی بر روی آن ها انجام می گیرد تا به دیگر برنامه های دیگر اجازه بدهند تا بتوانند به برنامه مورد نظر وصل شود و با آن تعامل داشته باشد.

API ها به طور خاص ساخته شده اند تا عملکرد و اطلاعات انتخاب شده را نمایان کنند در حالیکه از دیگر بخش های برنامه حفاظت می کنند و اجازه برقراری ارتباط را می دهند. ایجاد یک API به زمان زیادی لازم دارد؛ چون در نهایت باعث می شود نرم افزارهای دیگر با برنامه شما ارتباط داشته باشند و برنامه شما محبوب تر شود.    

مزیت استفاده از API

رابط های برنامه نویسی، این مزیت را دارند که جلوی دسترسی مستقیم سیستم های دیگر به اطلاعات حساس یا خصوصی را سد می کنند. تنها دستورات و رابط های تعریف شده با قابلیت کنترل دسترسی، در اختیار دیگران قرار خواهند گرفت. بنابراین سیستم های دیگر نمی توانند هر تغییر و هر فعالیت مخرب یا غیرمجاز را در سیستم دیگر به انجام برسانند.

 API را یک برنامه نویس کدنویسی می کند که بین سایت و اپلیکیشن چه ارتباطی وجود داشته باشد و اینکه شما بخواهید اعضای سایت شما یک جوری باشند و اعضای اپلیکیشن شما نفرات دیگری، اینجا هست که برنامه نویس در کدی که برنامه نویسی می کند بین اعضای سایت با اپلیکیشن ارتباطی برقرار نمی کند API با توجه به درخواستی که مدیر سایت از برنامه نویس خود می خواهد طراحی و برنامه نویسی می شود. 

برخی از APIهای شناخته شده

API در انواع مختلف در سخت افزارها و نرم افزارها وجود دارند. برخی از انواع شناخته شده ی API عبارتند از:

لایسنس (License) به چه معنی است ؟
ادامه مطلب

تفاوت وب سرویس و API

وب سرویس نامی دیگر برای APIهای تحت وب به شمار می رود. سایت های اینترنتی می توانند برای ارتباط با یکدیگر از وب سرویس یا API استفاده کنند. برای مثال ممکن است سایت «الف» سفارش های خرید کالا را از مشتریان دریافت کند و با استفاده از وب سرویس تعریف شده در سایت «ب»، درخواست تامین کالا را به صورت فوری ارسال نماید.

سایت های فروشگاه اینترنتی، برای دریافت وجه از مشتریان خود، لازم است تا با وب سرویس بانک ها ارتباط برقرار کنند و مبلغ لازم برای پرداخت و اطلاعات مشتری را اعلام کنند. در مرحله ی بعدی وب سرویس بانک، اطلاعات لازم برای شروع پرداخت را به فروشگاه اینترنتی ارسال می کند و مشتری با این اطلاعات به سایت بانک هدایت می شود.

انواع API از لحاظ کاربردی

API سیستم‌ عاملی :

این نوع API ها به‌ منزله‌ لایه‌ای انتزاعی (Layer of Abstraction) هستند که میان توسعه‌ دهنده نرم‌ افزار و سیستم‌ عامل قرار می‌گیرد.

کیت‌های توسعه نرم‌افزار (Software Development Kit) :

SDK ها نیز نوعی دیگی از API ها هستند که توسط شرکت‌های مختلفی همچون گوگل،‌ فیسبوک و … عرضه می‌شوند. توسعه دهندگان با استفاده از همین SDK ها می‌توانند اقدام به توسعه نرم‌ افزارها کنند.

API تحت وب (وب سرویس) :

این نوع API، کاربردی‌ترین نوع API است که در بستر وب پیاده سازی می‌شود. وب سرویس یا Web API ها در حقیقت پروتکل‌هایی هستند که از طریق شبکه اینترنت و وب تعامل میان اپلیکیشن‌های مختلف را امکان‌پذیر می‌سازند.

توسعه دهندگان نرم افزارها، با بکار گرفتن API های موجود در بازار در وقت و هزینه‌های خود صرفه جویی می‌کنند و به نوعی تابع سیستم SaaS هستند.

API های برنامه نویسی :

مجموعه دستوراتی که فریم ورک های برنامه نویسی مانند دات نت فریم ورک یا جاوا در اختیار برنامه نویسان قرار می دهند گونه ای از API به حساب می آید.

زیرا هسته ی مرکزی فریم ورک یک نرم افزار است که فعالیت های متعددی انجام می دهد و برنامه ها با فراخوانی دستوراتی از پیش تعریف شده، دستورات دلخواه خود را به فریم ورک ارسال می نمایند.

علاوه بر فریم ورک ها، هسته ی سیستم عامل ها مانند ویندوز و لینوکس نیز دارای API هستند. برنامه ها با فراخوانی این دستورات می توانند روی فعالیت های سیستم عامل کنترل داشته باشند.

API های سخت افزاری :

سخت افزارهای مختلف مانند تلویزیون های هوشمند، گوشی های موبایل، دوربین های تحت شبکه و بسیاری دیگر از سیستم های جدید که با نام خانه هوشمند شناخته می شوند، دارای API برای دریافت و ارسال اطلاعات هستند.

انواع API بر اساس سطوح دسترسی

API های عمومی :

دسترسی به این نوع از رابط های کاربردی برنامه نویسی برای همگی افراد آزاد می باشد. معمولا برای استفاده از آنها یک کلید نیاز است که آن را برای هر فرد درخواست کننده قرار می دهند.

API های خصوصی :

این نوع از رابط های کاربردی برنامه نویسی برای پرسنل داخل سازمان و افزایش بهره‌ وری و همچنین ارتباط بهتر سیستم های کامپیوتری در اختیار توسعه‌ دهندگان قرار داده می شوند.

RSS چیست ؟
ادامه مطلب

API های محافظت شده :

این نوع از رابط های کاربردی برنامه نویسی در اختیار اشخاص مشخصی و از قبل تعیین شده‌ ای قرار می‌گیرند که معمولا شرکای تجاری هستند.

از میان API های بالا، دو نوع آخری رایج تر می باشند به طوری که دو شرکت بزرگ جهان از قبیل فیسبوک و توییتر از این دو نوع استفاده می کنند که بیشتر مردم آنها را می شناسند. API های عمومی در اختیار توسعه دهندگان است. در وب سایت گیت هاب (GitHub) لیستی از رابط های کاربردی برنامه نویسی عمومی مختلف در دسته بندی های مختلف را می توان مشاهده کرد که بسیار قابل استفاده هستند.

نمونه ای از API سرویس های گوگل : گوگل درایو

استانداردهای وب سرویس

وب سرویس ها از طریق پروتکل‌های استانداردی به ارسال و دریافت داده‌ها با یکدیگر می‌پردازند. این استانداردها عبارتند از :

استاندارد XML – (Extensible Markup Language)

(XML) مخفف واژه Extensible Markup Language به معنی زبان نشانه‌ گذاری امتداد پذیر می‌باشد. این روش یکی از متدهایی است که بوسیله آن انتقال دیتا تنها در قالب متن صورت می‌پذیرد و صرفا برای انتقال داده‌ها میان وب سرویس ها به کار می‌رود. در حقیقت XML زیر مجموعه­ ساده شده‌ زبان SGML به حساب می‌آید. این پروتکل توسط W3C استانداردسازی شده است.

استاندارد SOAP – (Simple Object Access Protocol)

پروتکل مخصوص تبادل پیغام‌های مبتنی بر XML در بین شبکه‌های کامپیوتری است که استفاده از آن نیز بسیار رایج می‌باشد. عموما ارتباطات در این روش از طریق پروتکل امن HTTPS انجام می شوند و به همین دلیل نیز قالب SOAP برای انتقال داده های با سطح امنیتی بالا مناسب است.

استاندارد UDDI – (Universal Description, Discovery and Integration)

UDDI یک دایرکتوری برای ذخیره اطلاعات در مورد وب سرویس هایی است که از طریق SOAP ارتباط برقرار می‌کنند. این استاندارد که به نوعی یک فایل XML به حساب می‌آید، امکان معرفی و ثبت وب سرویس‌ ها را برای برنامه نویسان و شرکت‌ها فراهم می‌کند.

استاندارد WSDL – (Web Service Description Language)

WSDL به صورت یک فایل متنی XML است که در آن همه خدماتی که در ای پی آی ارائه می‌شوند، توابعی که در این وب سرویس قابل دسترسی هستند، و روش‌های CALL این توابع توصیف شده اند. به طور کلی، در همه­ وب سرویس ها یک فایل WSDL وجود دارد که مشخصات، مکان و نحوه استفاده از وب سرویس را توضیح می‌دهد.

البته این فایل متنی به زبان پیچیده‌ای نوشته شده است، و کاربر انسانی به سادگی آن را درک نمی کند. این استاندارد تنها برای خود نرم افزار تولید می‌شود و کاربرد دارد.

معماری وب سرویس ها (RPC – SOA – REST)

هدف از ایجاد پروتکل‌ها و یا معماری‌های API، تدوین قواعد و قوانین واحدی است که بوسیله آنها ای پی آی ها به راحتی بتوانند میان خود اطلاعات و داده‌ها را جابجا کنند.

در اینجا منظور از معماری API ایجاد پروتکل‌هایی است که بوسیله آنها بدون توجه به زبان برنامه نویسی نرم افزارها، و بدون در نظر گرفتن سیستم‌های عامل مورد استفاده در کلاینت و یا سرور، نیز بدون توجه به تکنولوژی مورد استفاده در دو طرف، نرم افزارها بتوانند به سادگی با هم در ارتباط باشند.

تفاوت سرور مجازی لینوکس و ویندوز
ادامه مطلب

اما در این بخش نیز معماری های متفاوتی ارائه شده‌اند:

1- معماری فراخوانی از راه دور یا RPC – (Remote Procedure Call )

ساختار RPC پروتکلی برای فراخوانی (CALL) یک سرویس از برنامه‌ای به برنامه دیگر بوسیله توابع خاصی می‌باشد. این پروتکل ارتباط میان نرم افزارهای مختلف در شبکه را بدون نیاز به درک جزئیات آن شبکه امکان پذیر می‌کند. این نوع وب سرویس در دو نوع مدل XML-RPC و JSON-RPC عرضه می‌شوند.

2- معماری سرویس گرایا  SOA – (Service Oriented Architecture)

معماری سرویس گرا روشی مبتنی بر ارائه خدمات با کمک بخش‌‌های کوچک (اجزاء) یک سازمان می‌باشد. در این سبک معماری هر سرویس می‌تواند توسط نرم افزارهای دیگر در داخل یا خارج یک سازمان فراخوانی شده و خدمات ارائه دهد. امروزه از SOA برای توسعه برنامه‌های کاربردی، یکپارچگی سیستم‌های اطلاعاتی سازمانی یا تعاملات اطلاعاتی بین سازمانی، استاندارد کردن وب سرویس و پروتکل‌های آن در دستگاه‌های دولتی و شرکت‌های خصوصی استفاده می‌شود.

3- معماری REST – (Representational State Transfer)

معماری رست REST یکی از معمول‌ترین و رایج‌ترین سبک‌های معماری در API ها محسوب می‌شود. پرکاربردترین پروتکل بکار رفته در این معماری، HTML است. برای اینکه یک API بتواند معماری REST داشته باشد باید پنج شرط را رعایت نماید:

  • کلاینت از سرور جدا باشد
  • بدون حالت و بی تفاوت (Stateless) باشد
  • سیستم لایه‌ای داشته باشد
  • قابلیت CASH داشته باشد
  • دارای قابلیت کد تقاضا باشد  

امنیت API

اقدامات امنیتی API و حفاظت از وب سرویس ها یکی از ابعاد مهم در ساخت API ها به شمار می‌رود. به طور حتمی با زیاد شدن ارتباطات و وسعت یافتن آنها خطر نفوذ در برنامه‌ها نیز افزایش می‌یابد. ارائه دهندگان API همواره موظف هستند تا تعادل میان بخش امنیت API و سهولت استفاده از آن را برقرار نمایند. توجه داشته باشیم که یکی از ویژگی‌های استفاده از API ها، بحث سهولت در کار با آنان است. پس اگر بخواهیم موانع امنیتی سختی برای یک API ایجاد کنیم، رسما کارکرد آن را مختل نمود‌‌ه‌ایم. این یعنی در بحث امنیت API ها، ارائه دهنده‌ها دیگر نمی‌توانند از وابستگی‌های پیچیده‌ سیستمی و یا مدل‌های مدیریتی بیش‌ از حد سفت‌ و سختی استفاده کنند که در نسل های پیشین IT بکار می‌رفتند.

منابع بسیاری وجود دارند که با توجه به آخرین وضعیت حملات در فضای کلی اینترنت، برای افزایش سطح امنیت و حفظ تعادل ای پی آی ها توصیه‌هایی را منتشر می‌کنند.

اما در این مقاله ما به برخی از نکات امنیتی در حوزه وب سرویس ها اشاره کرده ایم :

برخی از مهمترین نکات امنیتی در حوزه وب سرویس ها

  • ای پی آی ها می‌بایست با حداقل پرمیشن (مجوز) ممکن ارائه شوند. هرچه پرمیشن‌های API بیشتر باشند، احتمال بروز رفتاری غیرقابل‌ انتظار از وی نیز بیشتر خواهد بود.
  • سطح دسترسی کاربران به هر سورس (منبع) در سمت سرور را به صورت پیش‌فرض می‌باید مسدود نمود.
  • معماری ای پی آی ها تا حد ممکن باید ساده باشد، تا خطاپذیری سرویس کمتر شود.
  • در طراحی ای پی آی تا حد ممکن باید از پروتکل‌های امنی مانند HTTPS استفاده نمود.
  • تا جای ممکن باید اطلاعات حساس را هش کنیم.
  • تا حد امکان می باید پارامترها را اعتبار سنجی نمود.

یک دیدگاه بنویسید