در مقالات قبلی تمام آموزش های مورد نیاز برای ساخت وب سرویس restful بر اساس معماری و قوانین REST را دیدیم (وب سرویس REST چیست).
در اینجا قصد داریم به شما تمام اصول وب سرویس RESTful را که برای ساخت وب سرویس و ارایه API را دارید در اختیار شما قرار بدیم . در واقع تمام اصول پیشنهادی که در همه API های RESTful معروف مانند Telegram,GOOGLE,WIT,GITHUB,Yandex اجرا شده است
را مطرح میکنیم تا بتوانید api های قدرتمند و در عین حال ساده و قابل درک برای توسعه دهندگان دیگر بنویسید .
بیشتر تمرکز ما در مقاله آموزشی اصول وب سرویس RESTful , بر روی راه و روش های ساخت استاندارد API است که برای انجام مراحل کدنویسی PHP می توانید به مقالات عملیات REST API CRUD در php , ساخت وب سرویس RESTful در php مراجعه کنید.
در بحش اول اصول وب سرویس RESTful به معرفی اصول اولیه و پایه آن می پردازیم.
به عنوان تاریخچه شروع می کنیم .. در سال ۲۰۰۰ آقای روی فیلدینگ در تز دکتری خود,درباره سبک معماری ، طرح های مبتنی بر شبکه و معماری وب و URI ها و منابع ، معماری REST را مطرح کرد. ایشان یکی از مولفان اصلی پروتکلHTTP و از بنیانگذاران وب سرور آپاچی میباشد.
در واقع REST بر مبنای مفاهیم و معماری ای که وب بر اساس انها ایجاد شده بود طراحی شد.توسعه ی سریع و راحت و عمر طولانی آن,معماری مناسبی برای گسترش و تغییرات غیرقابل پیش بینی در طولانی مدت است.در سیستمهایی که بر اساس مفهوم REST طراحی شده اند,
همه چیز به صورت منابع در نظر گرفته می شوند که این منابع با URIها مشخص میشوند.البته این URIها لزوما ثابت نیستند و به آدرس فیزیکی یک منبع واقعی اشاره نمیکنند، بلکه انتزاعی هستند کهREST استفاده میکند.
طبقREST این URIها به انتخاب سرور هستند و میتوانند تغییر کنند (کلاینت باید این URI را از خود سرور دریافت کند) و مورد ثابتی در این زمینه وجود ندارد.
- از XML برای ارائه منابع استفاده می شود.
- از HTTP و متدهای GET, HEAD, POST, PUT, DELETE برای اجرای عملیات استفاده میشود.
- از URL به طور معمول برای شناسه یک وبسرویس استفاده میشود و پاسخ داده شده با فرمت XML است.
برای مثال صفحه اصلی یک سایت طبق این معماری یک منبع با شناسه http://www.example.com است.اجزا در این معماری روی منابع عمل میکنند، این معماری شبیه معماری وب میباشد و به خاطر آشنایی توسعه دهندگان با این سبک معماری,بسیار محبوب شد.
در مفهوم REST متدهای HTTP را به عملیات مورد نظر نگاشت میکنند، یعنی وقتی میخواهند یک منبع را حذف کنند (خود منبع که باURIمشخص میشود) درخواست را با HTTP DELETE ارسال میکنند.
وقتی میخواهند به آن چیزی اضافه کنند از متد POST استفاده میکنند و برای بازیابی,درخواست را با متد GET ارسال میکنند، و برای بازنویسی منبعی از PUT استفاده میکنند،
اما این روش اجباری نیست ولی ترجیح اکید این است که از متدهای پروتکل انتقال برای رساندن این مفاهیم استفاده شود. از متد POST برای ایجاد ،GET برای خواندن ، PUT برای به روز رسانی ،DELETE برای حذف استفاده میشود.با متد POST میتوان هر نوع دیتایی رو با
هر فرمتی منتقل کرد و طبیعتا در سمت دیگر با فرمت اصلی بازیابی و خوانده میشود.
طبق این معماری میتوان سیستمهای مختلفی از جمله وب سرویس را طراحی کرد که به آن RESTful گفته میشود.
اصول طراحی وب سرویس RESTful
امروزه برنامه های سنتی وب در حال حرکت به سمت سرویسی شدن هستند، بدین صورت که کلاینت ها تنها از طریق وب سرویسها با سرور در تماس هستند.
به بیانی دیگر ارتباط کلاینت ها با لایه Data Model از طریق وب سرویس ها صورت می پذیرد.در چنین برنامه هایی منطق برنامه کاملا در سمت کلاینت پیاده سازی می شود و سرور دیگر هیچ نقشی جز فراهم کردن داده برای کلاینت هایش را برعهده ندارد.
نمونه رایجی از این گونه نگرش برنامه نویسی,برنامه های SPA که مخفف Single Page Application است,می باشد.در اینگونه برنامه ها تمامی منطق برنامه در سمت کلاینت و پیاده سازی می شود و تنها نیازی که برنامه به سرور دارد، فراهم ساختن داده ها می باشد.
این نگرش این امکان را می دهد که شما به راحتی و بدون هزینه بالا یک برنامه SPA را به یک برنامه دیگر، مثلا یک برنامه موبایل تبدیل کنید. تنها کاری که انجام می شود این است که باید یک کلاینت برای تلفن همراه بنویسید که از طریق همان API ها با سرور ارتباط برقرار کند.
در نگاه اول پیاده سازی و استفاده از وب سرویس های RESTful بسیار مطلوب و خوش آیند به نظر می رسند. اما باید دقت داشته باشید که اگر در طراحی و پیاده سازی آنها دقت لازم را نکنید،
هزینه های جانبی زیادی را در آینده ممکن است به برنامه شما وارد کند که اکثر آنها نیز مربوط به هزینه اعمال تغییرات می باشند.به همین دلیل در این مطلب سعی شده مطالبی گفته شود که به طراحی هرچه بهتر وب سرویس های RESTful کمک کند.
اولین و مهمترین نکته ای که باید پیش از شروع به طراحی یک وب سرویس RESTful باید به آن توجه داشته باشید این است که طراحی یک سرویس خوب تنها یک فن نیست، بلکه یک هنر است و نیاز به خلاقیت دارد. در زیر به اصولی کلیدی در طراحی وب سرویس RESTful
اشاره شده است:
وب سرویس شما باید به صورت درست و به جا از استاندارد های وب استفاده کند. مثلا انواع مختلفی از کد های پاسخ HTTPوجود دارند که همه بصورت کلی معنی موفقیت آمیز بودن عملیات را دارند اما هر کدام جایگاه خاصی دارد که در حین استفاده باید به آن دقت نمود.
دقت داشته باشید همانطور که یک برنامه نویس برنامه اش را برای کاربر نهایی می نویسد، شما نیز وب سرویس تان را بعنوان یک برنامه برای برنامه نویس ها می نویسید. بنابراین در اینجا نیز اصل user friendly بودن مصداق دارد و باید به آن توجه نمود.وب سرویس باید
- طوری نوشته شود که یک برنامه نویس بتواند براحتی با آن کار کند.
- اگر وب سرویسی طراحی میکنید خیلی مهم است که توسط مرورگر ها و از طریق نوار آدرس آنها قابل پیمایش باشد.
- وب سرویس شما باید تا حد ممکن ساده و به راحتی قابل درک باشد. طوری آن را طراحی کنید که اعمال تغییرات بر اساس نیاز کاربر در آینده قابل انجام باشد.
- در طراحی وب سرویس به کارایی و انعطاف پذیر بودن آن توجه کنید.
- همانطور که UX برای برنامه های کاربردی مطرح می شود، در مورد وب سرویس ها نیز طوری باید آنها را طراحی کنید که برنامه نویسی که با آنها کار می کند تجربه خوبی داشته باشد.
این ها اصول و مواردی هستند که در تمامی مراحل طراحی وب سرویس ها باید همواره مد نظر قرار گرفته شوند.
در بخش دوم از مقاله آموزشی اصول وب سرویس RESTful به بحث های مهم تر و تخصصی دیگری اشاره می کنیم . پس مقالات دیگر را هم دنبال کنید
امیدوارم با به کارگیری این اصول وب سرویس RESTful در طراحی های API بتوانید میزان توسعه پذیری , خوانایی و استفاده آسان از آن را تا حد زیادی افزایش بدید و به اصول استاندارد آن برسید .
موفق و پیروز باشید.