REST API که با نام RESTful API نیز شناخته میشود یک API یا رابط برنامه نویسی کاربردی است که مطابق با سبک معماری REST است و امکان ارتباط با وب سرویسهای RESTful را به شما میدهد. کلمه REST مخفف عبارت Representational State Transfer و به معنی انتقال حالت بازنمایی است. این زبان توسط یک محقق کامپیوتر به نام “روی فیلدینگ” خلق شد.
API مخفف Application Programming Interface است و با عنوان رابط برنامه نویسی کاربردی ترجمه میشود. یک API مجموعهای از قواعد و دستورالعملهایی است که از طریق نرمافزارها و یا اجزای مختلف یک برنامه با همدیگر ارتباط برقرار میکنند. همانطور که از اسم کامل API هم مشخص است، وظیفه آن اتصال دو شئ یا موجودیت مختلف به یکدیگر است. برخی اوقات از API به عنوان یک قرارداد بین ارائه دهنده اطلاعات و کاربر اطلاعات یاد میشود. برای مثال در یک API برنامه هواشناسی ارائه دهنده اطلاعات ممکن است به کدپستی منطقه شما نیاز داشته باشد و در مقابل یک جواب دو قسمتی شامل بیشترین دما و کمترین دما را در پاسخ ارسال کند.
میتوانید API را به عنوان یک رابط بین کاربر یا کلاینت و منابع و وب سرویسهای موردنیاز در نظر بگیرید. همچنین API یکی از بهترین روشها برای اشتراک گذاری اطلاعات توسط سازمانهای مختلف است. در این روش میتوانید در عین حال امنیت اطلاعات خودتان را نیز حفظ کنید و برای مثال تعیین کنید که چه افرادی میتوانند به اطلاعات شما دسترسی داشته باشند.
یکی دیگر از مزایای API این است که به دانش فنی زیادی نیاز ندارید و لازم نیست نگران موضوعات مختلفی مثل نحوه دریافت اطلاعات، ذخیره سازی اطلاعات و… باشید.
میخواهید برنامهنویس شوید؟ در اینرابطه بیشتر بخوانید:
REST چیست؟
REST مجموعهای از دستورات معماری است و نمیتوان آن را یک پروتکل یا استاندارد دانست. طراحان API میتوانند با استفاده از روشهای مختلفی از REST استفاده کنند.
زمانی که کلاینت با استفاده از RESTful API یک درخواست ایجاد میکند، در واقع یک بازنمایی از وضعیت منبع به درخواست کننده یا نقطه پایانی انتقال داده خواهد شد. اطلاعات یا بازنمایی آنها ممکن است با فرمتهای مختلفی نظیر HTTP: JSON، HTML، XLT، Python، PHP یا متن ساده انتقال داده شود. در این بین فرمت JSON از بقیه محبوبتر است زیرا به هیچ زبانی وابسته نیست و در عین حال، هم توسط انسان و هم توسط ماشین قابل خواندن است.
نکته دیگری که باید در نظر داشته باشید این است که هدرها و پارامترهای مختلف نیز در متد درخواست HTTP مهم هستند؛ زیرا حاوی اطلاعات شناسه مختلفی مثل متادیتای درخواست، مجوزهای لازم، URI، اطلاعات مربوط به کش، کوکی و… هستند. هم درخواست و هم پاسخ دریافتی دارای هدر HTTP است و هر کدام نیز دارای اطلاعات ارتباطی HTTP و کد وضعیت مربوط به خود هستند.
برای اینکه یک API به عنوان REST API شناخته شود باید شامل موارد زیر باشد:
- باید دارای معماری کلاینت-سرور باشد و از کلاینت، سرور و منابع موردنیاز متشکل شده باشد و درخواستها نیز باید از طریق پروتکل HTTP انتقال داده شوند.
- ارتباط بین کلاینت و سرور باید کاملا Stateless باشد. یعنی هیچکدام از اطلاعات کلاینت نباید ذخیره شود و تمامی درخواستها نیز باید به صورت جداگانه نگهداری شوند.
- باید دارای دادههای قابل کششدن باشد تا ارتباط بین سرور و کاربر به راحتی انجام شود.
- یک رابط یکپارچه باید بین اجزای مختلف وجود داشته باشد تا اطلاعات با یک فرم استاندارد انتقال داده شوند. لازمه این موضوع این است که:
- دادههای درخواستی باید قابل شناسایی باشند و از بازنمایی که برای کلاینت ارسال میشوند جدا باشد.
- دادهها باید از طریق بازنمایی که برای کاربر ارسال میشوند قابل تغییر باشند؛ زیرا بازنمایی اطلاعات کافی برای این کار را دارد.
- پیامهایی که به کاربر بازگشت داده میشوند باید دارای اطلاعات کافی باشند تا کاربر به سادگی بتواند متوجه شود که چطور میتواند از این دادهها استفاده کند.
- باید امکان استفاده از هایپرتکست یا هایپرمدیا وجود داشته باشد. این بدین معنی است که کاربر بعد از بررسی یک منبع باید قادر باشد از هایپرلینکها برای بررسی تمامی اقدامات مرتبط استفاده کند.
- باید دارای یک سیستم چندلایه باشد که انواع سرورهای موجود (برای مثال سرورهای لازم برای امنیت، متعادلسازی بار و…) که در انتقال دادههای موردنیاز دخیل هستند را سازماندهی کند.
- باید دارای قابلیت Code-on-demand باشد (اختیاری). با این قابلیت سیستم میتواند کدهای قابل اجرا را از سرور به کاربر ارسال کند. با استفاده از این سیستم توانایی کاربر به شکل چشمگیری افزایش خواهد یافت.
کلام آخر
با وجود اینکه REST API باید تمامی این موارد را رعایت کند، با این وجود استفاده از آن نسبت به پروتکلهایی مثل SOAP که نیازمندیهای ویژهای مثل پیامرسانی از طریق XML دارد راحتتر است. همچنین پروتکلهایی مثل SOAP دارای سیستمهای تطبیق پذیر مالی و امنیتی بوده و به همین دلیل خیلی سنگینتر از دیگر پروتکلها هستند.
در مقابل REST API مجموعهای از دستورالعملها است که میتوانید در صورت نیاز از آنها استفاده کنید و به همین خاطر REST API خیلی سریعتر و سبکتر از پروتکلهای دیگر است. همچنین مقیاسپذیری بسیار بالای این رابط برنامهنویسی باعث شده است که به یک گزینه مناسب برای مواردی مثل توسعه نرم افزار موبایل و همچنین اینترنت اشیاء تبدیل شود.