ارتباطی فارغ از سکو در اختیار برنامه‌ها
فناوری RESTful API چیست و چگونه کار می‌کند؟
امروزه تقريبا تمام اپلیکیشن‌های موجود در اینترنت به ارائه قابلیت همکاری و مشارکت با سایر سرویس‎ها به‌عنوان یک ویژگی اساسی نیاز دارند. هر کدام از اپلیکیشن‎ها در تمام لحظات فعالیت خود در حال ارتباط برقرار کردن با سایر اپلیکیشن‌ها هستند (برای مثال، یک اپلیکیشن موبایل با یک اپلیکیشن وب ارتباط برقرار می‌کند)؛ بنابراین مهم است که تمام اپلیکیشن‌ها بتوانند بدون وابستگی به سیستم‌عامل و زبان‎های برنامه‌نویسی با یکدیگر در ارتباط باشند. برای ساخت چنین اپلیکیشن‌هایی از سرویس‎های وب استفاده می‌شود.

سرویس‎های وب

یک سرویس وب، مجموعه‎ای از استانداردها و پروتکل‎ها است که اپلیکیشن‌ها و سیستم‎ها برای تبادل داده در بستر اینترنت از آن استفاده می‌کنند. یک سرویس وب می‌تواند با هر نوع زبان برنامه‌نویسی نوشته شود و مستقل از سیستم‌عامل است. به‌عنوان نمونه یک اپلیکیشن ساخته‌شده با PHP که در یک سرور لینوکس اجرا می‌شود می‌تواند با یک اپلیکیشن اندروید ساخته‌شده با جاوا که در سیستم‌عامل اندروید اجرا می‌شود ارتباط برقرار کند. (شکل 1)


شکل 1

REST چیست؟

رابط برنامه‌نویسی اپلیکیشن یا به‌اختصار API مجموعه‎ای از روش‎های تعریف‌شده مشخص از ارتباطات بین اجزای نرم‌افزاری مختلف است. یک API خوب با فراهم‌سازی تمام اجزای مورد نیاز برای ساخت باعث می‌شود تا توسعه یک برنامه کامپیوتری ساده‎تر انجام شود. در اینجا مجموعه‎ای از قوانین وجود دارد که به برنامه‎ها اجازه می‌دهد با یکدیگر گفت‌وگو کنند. توسعه‌دهنده، API را روی سرور ایجاد می‌کند و به کلاینت اجازه می‌دهد با آن گفت‌وگو کند. باوجود این‌که مشخصه‎های API‌های مختلف با یکدیگر متفاوت است، هدف نهایی فراهم‌سازی امکاناتی برای برنامه‌نویسان است تا از طریق به‌کارگیری خدمات ارائه‌شده توسط API به توسعه نرم‌افزاری خود بپردازند. معروف‎ترین روش برای ارائهAPIهای وب REST است.
REST (سرنام Representational State Transfer) یک معماری نرم‌افزاری مستقل است که بسیاری از خصوصیات اساسی و پروتکل‎هایی که رفتار کلاینت‎ها و سرورها را کنترل می‌کنند، فراهم می‌کند. این رویکرد در طراحی API از همان مزایای مکانیسم‎های اینترنتی (مبتنی بر پروتکل HTTP) بهره‌مند می‌شود که برای نمایش صفحات معمولی وب استفاده می‌شود، بنابراین همان مزیت پیاده‌سازی سریع‎تر و سادگی توسعه در اینجا نیز وجود خواهد داشت. از آنجا که REST API‌‌ها از HTTP استفاده می‌کنند در عمل می‌توان آن‌ها را در هر زبان برنامه‌نویسی استفاده کرد.

منظور از RESTful چیست؟

هر API که ویژگی‎های زیر را داشته باشد، به‌عنوان یک RESTful API شناخته می‌شود:
• معماری کلاینت‌ـ‌ سرور: کلاینت به‌عنوان front-end و سرور به‌عنوان back-end شناخته می‌شود. به این نکته مهم توجه داشته باشید كه هر دوی این‌ها مستقل از یکدیگر هستند.
• مستقل: هیچ داده‎ای نباید در زمان پردازش انتقال درخواست روی سرور ذخیره شود. وضعیت جلسه (session) باید در سمت کلاینت ذخیره شود.
• قابل کش شدن: کلاینت باید این توانایی را داشته باشد که پاسخ‎ها را در یک کش ذخیره کند. چنین کاری اصولا عملکرد API را بهبود می‎بخشد.

RESTful API چیست؟

یک RESTful API (که با عنوان یک RESTful سرویس وب نیز شناخته می‌شود) یک سرویس وب است که با استفاده از پروتکل HTTP و اصول REST پیاده‌سازی می‌شود و شامل مجموعه‎ای از منابع است که متدهای HTTP (GET, PUT, POST, DELETE) را به خدمت می‌گیرد. این مجموعه از منابع در نهایت در یک فرم استاندارد (معمولا XML) که می‌تواند هر نوع رسانه اینترنت معتبر باشد، ارائه می‌شود. (شکل 2)
RESTful API‌ها قادر به استفاده از HTTP برای انجام عملیات ساخت، اجرا، به‎روزرسانی و حذف داده و منابع هستند. فرمت‎های درخواست RESTful API معروف شامل REST ، XML-RPC ،SOAP است. فرمت‎های پاسخ RESTful API معروف نیز شامل REST، XML-RPC، SOAP، JSON و PHP هستند.


شکل 2

JSON

JSON (سرنام JavaScript Object Notation ) روشی است که به برنامه‎ها اجازه می‌دهد به تبادل اطلاعات بپردازند. API‌ها روشی برای برنامه‎ها هستند تا بتوانند با یکدیگر ارتباط برقرار کنند، اما از آنجا که آن‌ها قدرت تکلم ندارند، به روشی نیاز دارند تا بتوانند داده‎ها و اطلاعاتی را که در حال تبادل آن هستند، توصیف کنند. JSON برای جداسازی داده‎ها و دادن اطلاعات ساختاری معنا‌دار از براکت، نقل‌قول، کولون و کاما استفاده می‌کند، به‌این‌ترتیب کامپیوترها می‌توانند تفاوت بین نام، نام خانوادگی یا هر گونه اطلاعات دیگری را که به‌طور بالقوه این داده‎ها را توصیف می‌کند، تشخیص دهند.
JSON به یکی از روش‎های مورد علاقه برنامه‌نویسان برای فعال‌سازی ارتباطات API تبدیل‌شده است. با این روش می‌توان یک راهکار ساده و سبک را برای تبادل داده در محیط اینترنت، درحالی‌که ساختار و معنای این داده حفظ می‌شود، فراهم کرد.

امنیت

امنیت API بزرگ‌ترین چالشی است که سازمان‎ها به دنبال آن هستند تا طی سال‎های پیش رو برطرف شود. بر اساس تحقيقات انجام‌گرفته SmartBear، امنیت چالش شماره یک فناوری شناخته‌شده است. 41.2% از مشارکت‌کنندگان این تحقيق نیز اعلام کرده‎اند، امنیت بزرگ‌ترین چالش فناوری API است که آن‌ها امیدوار هستند، روزی برطرف شود. در حال حاضر نزدیک به نیمی‌ از ارائه‌دهندگان API ابزاری را برای آزمایش امنیت API به خدمت گرفته‎اند.
در زمان طراحی و توسعه یک RESTful API جنبه‎های امنیتی باید موردتوجه جدی قرار گیرد. شما باید مجوزهای دسترسی را به‌ویژه در مورد متدهایی مثل DELETE (برای حذف منابع) و PUT (به‎روزرسانی منابع) به‌طور واضح مشخص کنید. این متدها تنها باید توسط کاربران تایید صلاحیت شده قابل‌دسترس باشند و سابقه هر کدام از این فراخوانی‎ها نیز ذخیره‌سازی شود. برای برقراری ارتباطات حتما باید از یک پروتکل رمزگذاری مثل TLS یا SSL که امنیت ارتباطات را در یک شبکه کامپیوتری فراهم می‌کنند، استفاده شود.
در یک حمله DOS (سرنام Denial of Service ) مهاجم معمولا با ارسال حجم زیادی پیغام از شبکه یا سرور مجوزهایی را درخواست می‌کند که پاسخ‎های نامعتبر را به همراه دارد. اگر اقدامات امنیتی درست انجام نشود حمله‌های DOS می‌تواند عملکرد یک RESTful API را مختل کند. امروزه حتی اگر API شما برای محیط‎های عمومی‌ نیز در نظر گرفته نشده باشد، همچنان ممکن است توسط دیگران قابل‌دسترس باشد. این به معنای آن است که امنیت REST API بیشتر از هر زمان دیگری ارزشمند و حیاتی شده است. تصور کنید که فرد یا گروهی موفق به انجام یک حمله DOS شود. به‌این‌ترتیب، تمام کلاینت‎های متصل دیگر قادر نخواهند بود به API شما دسترسی داشته باشند.

کلیدهای API

کلیدهای API توسط بسیاری از API های وب استفاده می‌شوند تا نوعی از کنترل دسترسی را فراهم کنند. کلیدهای API در واقع ابزاری برای شناسایی و تشخیص اپلیکیشن و کاربر هستند و نمی‌توان آن‌ها را یک پروتکل امنیتی مستقل و کامل در نظر گرفت. خدمات REST عمومی‌ بدون کنترل دسترسی با تهدیداتی مواجه هستند و می‌توان از کلیدهای API برای کم کردن این تهدیدات استفاده کرد. سازمان‎ها اغلب از این شیوه برای کسب درآمد از API استفاده می‌کنند، به این شكل که به‌جای مسدودکردن یا باز گذاشتن کل سرویس به مشتريان بر اساس پلن دسترسی خریداری‌شده اجازه دسترسی داده می‌شود.

رابط برنامه‌نویسی اپلیکیشن یا به‌اختصار API مجموعه‎ای از روش‎های تعریف‌شده مشخص از ارتباطات بین اجزای نرم‌افزاری مختلف است

معمولا یک کلید API امکان دسترسی کامل به تمام اعمالی را که یک API قادر به انجام آن است، فراهم می‌کند که شامل واردکردن داده‎های جديد و حذف داده‎های موجود نیز می‌شود. اگر شما از یک کلید API یکسان در چند اپلیکیشن استفاده کنید، نقص در یک اپلیکیشن می‌تواند داده‎های کاربران شما را از بین ببرد. بعضی از اپلیکیشن‌ها به کاربران اجازه می‎دهند تا کلیدهای API جدید تولید کنند یا کلیدهای نامعتبر را لغو کنند. توانایی تغییر یک کلید API محدودیت‎های امنیتی را کاهش می‌دهد.

چرا و چگونه باید از یک RESTful API استفاده کرد؟

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

پیاده‌سازی کدگذاری SSL (سرنام Secure Socket Layer)

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

مستندات دقیق API

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

مدیریت نسخه‎های API

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

ترکیب API با منابع مرتبط

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

برچسب: