برنامه‌ نویسی بر اساس اصول REST (رست) چیست؟

کلیات REST (رست)

یکی از راه‌های ارائه خدمات و همکاری میان سیستم‌های کامپیوتری در بستر شبکه سرویس‌های وبREST (Representational state transfer) می‌باشد. در واقع REST یک معماری وب سرویس است که برای انتقال داده‌ها و اطلاعات، معمولا از پروتکل HTTP استفاده می‌نماید. باید گفت که معماری REST (رست) یک اساس و رکن اصلی در ساختار امروزی وب به شمار می‌رود و در ابررسانه‌های توزیع شده کاربرد دارد. این معماری دارای رویکردی جهت ساده‌سازی سرویس‌های پیچیده وب است و هدف آن نیز توسعه مستقل از اجزا با استفاده از واسطه‌ها می‌باشد؛ این نوع از معماری جهت افزایش انعطاف‌پذیری، سادگی کارها، امکان مشاهده و نظارت و قابلیت حمل و اطمینان است. حیرت‌آور به نظر می‌آید که در دنیای وب، مرورگر کاربران از طریق راه‌های پیچیده با سرویس‌دهندگان ارتباط برقرار نماید، بدون آن‌که کاربران هیچگونه اطلاعی نسبت به منابع سرویس‌دهنده داشته باشند. در این ارتباط یکی از محدودیت‌های اصلی آن است که سرویس‌دهنده و سرویس‌گیرنده هر دو باید رسانه مشترکی را بپذیرند و از آن استفاده نمایند، بطور مثال می‌توان به زبان نشانه‌گذاری HTML اشاره نمود.

rest
rest

متاسفانه در بسیاری از منابع، شما مفاهیم SOAP و REST را به عنوان رقیب مشاهده می‌نمایید، این در حالی است که SOAP یک پروتکل بوده و مقایسه آن با REST که یک معماری تلقی می‌شود از نظر تئوریک صحیح نمی‌باشد، و شاید بتوان برای مقایسه از SOA و RPC یاد کرد. اما بطور کلی اگر بخواهیم مقایسه‌ای داشته باشیم باید گفت که در این معماری برای انجام اتصال‌ها و دریافت ، ایجاد، بروزرسانی و یا حذف اطلاعات (CRUD) یک منبع، از فراخوانی یک آدرس تحت پروتکل HTTP استفاده می‌شود که به آن اصلاحا HTTP Request و پاسخ سرویس‌دهنده نیز معمولا در قالب زبان‌های نشانه‌گذاری همچون XML، HTML و یا JSON  بصورت یک HTTP Response ارسال می‌گردد. لازم به ذکر است که در یک سیستم که بر پایه معماری REST فعالیت می‌کنید، تمامی مفاهیمی که با آن سر و کار داریم به عنوان یک منبع در نظر گرفته می‌شود و از طریق یک URL قابل دسترس است؛ باید گفت که آدرس URL صرفا یک آدرس فیزیکی نبوده و در اکثر اوقات آدرسی منطقی است. به طور مثال اگر بخواهیم یک کتاب با شناسه ۱۰ را درخواست کنیم، کافی‌ است تا آدرس منطقی http://BatisApp/api/books/10 را فراخوانی نماییم.

مختصری از تاریخچه REST

REST در سال ۲۰۰۰ به بصورت پایان‌نامه دوره دکتری آقای Roy Fielding تحت عنوان Architectural Styles and the Design of Network based Software Architectures از دانشگاه Irvine کالیفرنیا معرفی گردید. آقای Fielding این سبک معماری را بصورت موازی با توسعه HTTP 1.1 و بر پایه نسخه موجود HTTP 1.0 طراحی نمود. لازم به ذکر است که ایشان از مولفان اصلی پروتکل HTTP نیز بوده‌اند.

خصوصیات معماری REST

  • سیستم شبکه‌ای دارای معماری Client – Server
  • Stateless یا بدون وضعیت بودن: به این معنا است که سرویس‌دهنده هیچ گونه اطلاعاتی را از وضعیت سرویس گیرنده در خود ذخیره ننماید. یعنی تمامی درخواست‌ها بایستی مستقل از یکدیگر باشند؛ در صورتی که نیاز به حالت قبلی باشد، سرویس گیرنده باید آن را در قالب درخواست جاری مجددا ارسال نماید.
  • Cacheable یا قابلیت Cache: به این معناست که پاسخ‌های ارسالی از طرف سرویس‌دهنده باید قابلیت این را داشته باشند که در مرورگر سرویس‌گیرنده Cache شود؛ این قابلیت و زمان اعتبار معمولا در سرآیند پاسخ HTTP بصورت صریح و یا ضمنی ذکر می‌شوند و نیازی به ساز و کار جدید ندارد.
  • Layered System یا سیستم لایه‌بندی شده: بدین معنا است که سیستم‌هایی که در بین راه سرویس‌گیرنده و سرویس‌دهنده قرار دارند بتوانند بصورت شفاف عمل نمایند؛ بطور مثال ممکن است زمانی که یک سرویس‌گیرنده درخواست منبعی را می‌نماید، منبع از طریق یک سرویس‌دهنده میانی که قبلا آن منبع را Cache نموده برای سرویس‌گیرنده ارسال شود. شاید جا داشته باشد که در اینجا بگوییم اگر قابلیت Stateless بودن وجود نداشت، اجرا مثال فوق بسیار دشوار بود.
  • Code on demand یا قابلیت کد درصورت نیاز: این قابلیت اجباری نبوده، و این امکان را می‌دهد تا سرویس‌دهنده با ارسال کدی به سیستم سرویس‌گیرنده، دسترسی‌های آن را کاربر را سفارشی نماید.
  • دارای واسط یکنواخت یا Uniform Interface باشد.

به سیستم‌هایی که دارای قابلیت‌های بالا هستند و از REST استفاده می‌نمایند به اصطلاح RESTful گفته می‌شود.

گفته‌ها حاکی از آن است که استاندارد جامع و مرجعی همچون استانداردهای قرار داده شده برای SOAP برای REST وجود ندارد و دلیل آن هم این است که REST یک معماری بوده اما SOAP یک پروتکل می‌باشد؛ اما باید گفت که برای پیاده‌سازی REST از استانداردهایی همچون HTTP، JSON، XML و … استفاده می‌شود.

امید است که این مطلب مفید واقع شود.

نویسنده مطلب: یاشار عرفانیان

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

43 − 34 =