RESTful API چیست ؟
معرفی RESTful API
در واقع RESTful API یک رابط برنامهنویسی کاربردی میباشد که از درخواستهای HTTP و دستوراتی از قبیل GET, PUT, POST و DELETE به منظور ایجاد، تغییر یا بروزرسانی، دریافت، حذف و پردازش بر روی دادهها و منابع بهره میبرد.
از RESTful API همچنین با عنوان “وب سرویس RESTful” نام برده میشود، بر اساس تکنولوژی REST (مخفف Representational State Transfer)، سبکی از معماری نوین و رویکرد به سوی ارتباطات است که اغلب در توسعه خدمات وب مورد استفاده قرار می گیرد.
تکنولوژی REST معمولا به تکنولوژی ساده پروتکل دسترسی به اشیاء (SOAP) ترجیح داده میشود زیرا REST پهنای باند کمتری را اشغال میکند و همین موضوع سبب میشود که در زمینه استفاده از اینترنت مناسبتر باشد. API برای یک وبسایت، در واقع کُدی است که دو نرم افزار را قادر می سازد تا با یکدیگر ارتباط برقرار کنند.
API برای یک برنامه نویس راه مناسبی جهت توسعه برنامهای با محوریت درخواست سرویس و خدمات از یک سیستم عامل یا یک برنامه کاربردی را ارائه میدهد.
REST که توسط مرورگرها نیز مورد استفاده قرار میگیرد این جایگاه را دارد که به عنوان زبان ارتباط در اینترنت درنظر گرفته شود. با میزان استفاده رو به رشد از سرویس های ابری، API ها در زمینه ارائه وب سرویسها در حال پدیدار شدن هستند. REST انتخابی منطقی برای ساختن API هایی است که کاربران را قادر میسازد تا به سرویسهای ابری متصل شده و با آن ها توسط یک پروتکل (مانند http، smtp، ftp و …) ارتباط برقرار کنند. هم اکنون API های RESTful توسط سایت هایی مانند LinkedIn، Google، Amazon و Twitter استفاده می شوند.
RESTful API یک تراکنش را برای ایجاد مجموعهای از ماژول های کوچک، خرد میکند و هر ماژول یک بخش خاص از تراکنش را در بر میگیرد. این ماژولار بودن، زمینه پیدایش توسعه دهندگانی با قابلیت انعطاف پذیری بالا را فرآهم میآورد. اما همین مسئله میتواند از ابتدا برای طراحان چالش برانگیز باشد. در حال حاضر مدل های ارائه شده توسط سرویس ذخیره سازی ساده آمازون، رابط ابری مدیریت داده ها و OpenStack Swift از محبوب ترین مدلها هستند.
RESTful API به طور واضح از مزایای اصول تعریف شده HTTP توسط پروتکل RFC 2616 بهره میبرد. آن ها از GET برای دریافت منابع، از PUT برای تغییر یک بخش یا بروزرسانی یک منبع که میتواند یک شیء، فایل یا بلاک باشد، همچنین از POST برای ایجاد منبع و از DELETE برای حذف آن استفاده می کنند.
با REST، اجزای شبکه منبعی میباشند که درخواست دسترسی به آن را دارید. پیشفرض اینگونه است که تمام فراخوانیها فاقد وضعیت (Stateless) هستند. با خدمات RESTful هیچ چیز در میان اجرای دستورالعمل ها از قلم نمیافتد.
از آنجا که فراخوانیها فاقد وضعیت و مرجع (Stateless) هستند، REST در برنامه های ابری، کاربردی و مفید تلقی میگردد. اگر فرآیندی با عدم موفقیت روبرو شود اجزاء فاقد وضعیت میتوانند آزادانه بازنشانی و همسان با تغییرات میزان بار، تغییر مقیاس دهند. این به این دلیل است که هر درخواست را میتوان به هر نمونه از یک جزء هدایت کرد. در آنجا ممکن است چیزی که میبایست توسط تراکنش بعدی یادآوری شود، ذخیره نشده باشد. این باعث می شود که REST برای کاربردهای تحت وب ترجیح داده شود، اما مدل RESTful نیز در سرویسهای ابری، مفید و کاربردی است، زیرا اتصال به یک سرویس از طریق یک API به کنترل چگونگی رمزگشایی URL مربوط میباشد. محاسبات ابری و سرویس های کوچک تقریبا مطمئن هستند که طراحی RESTful API در آینده به شکلی مرسوم خواهد شد.
همانطور که گفتیم REST API از HTTP استفاده میکند و از این روز تقریبا توسط تمامی زبانهای برنامهنویسی قابل استفاده بوده و به آسانی قابل تست است. مستقل بودن سرویسدهنده و سرویسگیرنده موجب می گردد تا به طور مجزا به هر زبانی قابل کدنویسی باشند.
به عنوان مثال توییتر یک REST API ارائه میدهد که از طریق آن میتوان آخرین توییتها را با استفاده از Query کاوید یا برچسب هش (#) درخواست کرده و REST API نتایج درخواست را در قالب JSON برگرداند. در نمونه زیر درخواست سه توییت آخر که با عبارت jQuery مطابقت دارند را مشاهده میکنید.
http://search.twitter.com/search.json?q=jQuery&result_type=recent&rpp=3
در رابطه با آنچه که یک REST API میبایست ارائه دهد: در این رابطه REST API میباید به جزئیاتی از قبیل پارامترهای پرس و جو، فرمت پاسخ، محدودیت درخواست، کلیدهای عمومی API، متدها (GET/POST/PUT/DELETE)، زبان های قابل پشتیبانی، پشتیبانی از HTTPS و Callback و … اشاره کند. REST API باید مشخص کند چه اطلاعاتی را فراهم میکند و چگونه میتوان از آن استفاده کرد.
منبع : techtarget.com