اگر پیادهسازی خود را به عنوان یک Web Application بگذارید، خروجی ای که میگیرید برای خودتان کاملا درست و قابل استفاده است؛ اما فرض کنید قرار است یک برنامه دیگر نیز از این سیستمی که شما طراحی کرده و توسعه دادهاید، استفاده کند. حالا این برنامه میتواند روی وب باشد، برنامه ویندوزی باشد یا برنامه موبایل، نوع آن خیلی مهم نیست؛ مهم این است که این برنامه بتواند از اطلاعاتی که شما به عنوان یک برنامه Web Application توسعه دادهاید استفاده کند. اگر معماری شما همان یک برنامه تحت وب باشد، تعامل برنامه که به آن میگوییم Client (خدمت گیرنده) از شما Server (خدمت دهنده) تا حدودی مشکل و مدیریت خطا در آن نیز بسختی امکانپذیر میشود.
اینجاست که استفاده از سرویسهای وب کار را راحتتر میکند؛ یعنی شما یک سری API ارائه میکنید که قرار است به بقیه خدمت گیرندهها اطلاعات لازم را در مورد وضع آب و هوا ارائه کند و برنامه شما که یک برنامه تحت وب بود از آن سرویسها استفاده کند، برنامههای دیگر نیز برای نمایش وضعیت آب و هوا آن را مورد استفاده قرار دهند.
یکی از پروتکلهای وبسرویس SOAP است؛ معماری قدیمی وب سرویسها که بر پایه XML استوار بود؛ یکی از معماریهای جدیدی که استفاده از آن مرسوم شده سرویسهای REST است. همان طور که از اسم آن برمیآید به وضعیت وابسته و برای انتقال اطلاعات در یک سیستم توزیع شده استفاده میشود و بر مبنای پروتکل HTTP استوار است. استفاده از آن خیلی راحتتر از معماریهای پیچیده مانند
RPC ،CORBA و SOAP است.عملیاتی را که قرار است یک سرویس بر مبنای REST انجام دهد، وضعیت یک درخواست HTTP مشخص میکند. اگر دادههای شما با متد Post در یک بستر HTTP ارسال شوند، به معنای این است که شما قصد دارید دادهای را ایجاد یا بهروزرسانی کنید، اگر متد Get را مورد استفاده قرار دهید، یعنی درخواست گرفتن اطلاعات را دارید، اگر با Delete این کار را انجام دهید دادههای مورد نظر شما حذف خواهد شد، در نتیجه شما با استفاده از وضعیت HTTP عملیات مرسوم CRUD (ایجاد، خواندن، بهروزرسانی و حذف) را انجام میدهید.
REST یک استاندارد نیست، بلکه راه جایگزین SOAP و RPC است. از شباهتهای آن با وب سرویسهای قدیمی میتوان به موارد زیر اشاره کرد:
1ـ به محیط یا سیستم عامل وابسته نیست و روی هر محیطی میتوان از آنها استفاده کرد.
2ـ به زبان یا محیط توسعه وابستگی ندارد و شما با استفاده از هر زبانی که بتواند درخواستهای HTTP را مدیریت کند، میتوانید از آنها استفاده کنید.
3ـ به دلیل این که روی HTTP اجرا میشود یک راه استاندارد برای توسعه وب سرویسهاست.
دادههای خروجی در سرویس REST که به آن RESTful Web Service گفته میشود، میتواند بر مبنای XML که RSS یکی از مثال های عمومی آن است باشد یا هر فرمت دیگری مانند JSON. این که خروجی براساس چه نوع دادهای باشد به عهده طراح است.
میخواهید اطلاعات کاربری با شماره کاربری ۱۲۳۴۵ را دریافت کنید. برای این منظور در SOAP درخواست زیر لحاظ میشود:
«?xml version="1.0"?»
soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"»
«soap:body pb="http://www.acme.com/phonebook"»
«pb:GetUserDetails»
«pb:UserID»12345«/pb:UserID»
«/pb:GetUserDetails»
«/soap:Body»
«/soap:Envelope»
اما در یک سرویس REST به صورت زیر بیان میشود
http://www.acme.com/phonebook/UserDetails/12345
همانگونه که مشاهده میکنید استفاده از REST به مراتب سادهتر از SOAP است.
اهداف توسعه REST:
1ـ مقیاسپذیر بودن اجزای سیستم
2ـ ایجاد یک رابط عمومی برای ارتباط با سیستم
3ـ وابسته نبودن به اجزای توسعه سیستم
۴ ـ استفاده از اجزای واسط برای کاهش زمانبندی انتقال اطلاعات، اجباری کردن امنیت، و پنهانسازی و کپسولهسازی قوانین موجود در سیستم.
در REST دو چیز مهم است؛ یکی Resource که URL و کل درخواست HTTP که از سمت یک خدمت گیرنده صادر میشود و دیگری State یعنی وضعیت آن درخواست که همانطور که در بالا توضیح داده شد متدهای HTTP وضعیت یک درخواست را مشخص میکند.
در حال حاضر خیلی از سایتهای بزرگ برای ارائه خدمات خود از REST API استفاده میکنند، مانند توییتر، فیسبوک، Google و....
امیربهاالدین سبطالشیخ
منابع:
1ـ http://rest.elkstein.org/
2 ـ http://en.wikipedia.org/wiki/Representational_state_transfer