پیاده سازی سرویس RESTful بوسیله Slim (قسمت اول)

اگر قصد داشته باشید اپلیکیشنی تحت پلتفرم های مختلف پیاده سازی کنید و اطلاعات دریافت شده از کاربران را در یک پایگاه داده مرکزی مدیریت نمایید، REST گزینه مناسبی برای ارتباط بین سرور و اپلیکیشن شما خواهد بود.

در این مطلب نحوه پیاده سازی یک سرویس RESTful با قابلیت های CRUD به وسیله فریم ورک Slim بیان خواهد شد. توجه داشته باشید فرض بر این هست که شما با مفاهیم مربوط به معماری Representational State Transfer یا به صورت خلاصه شده، REST، آشنایی دارید. چنانچه با این مفهوم آشنایی ندارید مطلب اصول طراحی وب سرویس های REST از وب سایت همکدی میتواند برای شما شروع مناسبی باشد.

همانطور که در بالا ذکر شد این مطلب به توضیح مفاهیم مربوط به پیاده سازی یک سرویس REST نمی پردازد و سعی بر این است تا در مثالی ساده نحوه پیاده سازی این سرویس به شما نشان داده شود. در ادامه نحوه پیاده سازی یک سرویس ساده برای ثبت و دسترسی به یاداشت ها را دنبال خواهیم کرد.

ابتدا می بایست دیتابیس و سپس تیبل یاداشت ها را در مای اس کیو ال (MySQL) ایجاد کنیم. برای اینکار از طریق PhpMyAdmin یا هر کلاینت دیگری که برای دسترسی به مای اس کیو ال از اون استفاده می کنید دیتابیس خود را ایجاد و سپس کد زیر را جهت ایجاد تیبل یاداشت ها اجرا نمایید.

من برای مدیریت پکیج های مورد استفاده در این پروژه از کامپوزر (Composer) استفاده میکنم. برای شروع ابتدا در روت وب سرور خود پوشه ای جدید برای ابن پروژه ایجاد نمایید.

سپس در داخل پوشه فایلی با عنوان composer.json ایجاد نموده و با استفاده از ویرایشگر کد زیر را در داخل آن وارد نموده و فایل را ذخیره کنید.

کد JSON فوق پکیج هایی که در این پروژه مورد استفاده قرار خواهد گرفت مشخص می کند. ما در این پروژه از فریم ورک Slim و او آر ام (ORM) سبکی به نام Idiorm استفاده می کنیم. برای دریافت پکیج ها و اعمال تنظیمات لازم برای کامپوزر کافی هست از طریق ترمینال به پوشه پروژه وارد شوید و سپس دستور نصب کامپوزر را اجرا نمایید.

در صورت عدم بروز خطا در این مرحله پوشه ای با نام vender حاوی پکیج های مورد نظر ما و تنظیمات کامپوزر ایجاد خواهد شد. بسیار خوب در مرحله بعد می بایست فایلی با نام index.php در پوشه اصلی پروژه ایجاد نمونده و برای فراخوانی اوتو لودر کامپوزر کد زیر را در ابتدای آن وارد نمایید.

در ادامه کد بالا و برای ایجاد اتصال با سرور MySQL و دسترسی به دیتابیس پروژه کد زیر را در فایل وارد نمایید. کد زیر اتصال اولیه بین MySQL و ORM ما را ایجاد خواهد نمود.

در مرحله بعد می بایست یک اینستنس از کلاس Slim برای ایجاد اپلیکیشن و دسترسی به امکانات آن ایجاد کنیم. بدین منظور کد زیر را در ادامه به فایل index.php اضافه کنید.

در ادامه قصد داریم امکان انجام اولین عملیات، یعنی Create در این سرویس را پیاده سازی کنیم. همانطور که اطلاع دارید برای پیاده سازی این عملیات می بایست از متد POST استفاده کنیم. در کد زیر میتوانی نحوه پیاده سازی عملیات Create را به صورت کامل مشاهده کنید. در ادامه در مورد جزییات آن توضیح بیشتری ارائه خواهد شد.

در کد بالا ما از طریق روتر Slim مسیری برای یاداشت ها ایجاد می کنیم که از طریق متد POST قابل دسترسی هست و با عنوان notes/create که در خط ۲۲ کد بلا مشخص شده اون را نام گذاری میکنیم.

در خط ۵ ام از کد بالا ما متن محتوای ریکوئست POST را که به صورت متن JSON ارسال شده دریافت و به یک آبجکت پی اچ پی تبدیل میکنیم. در خط ۸ تا ۱۰ کد بالا ما یک رکورد جدید در تیبل note ایجاد میکنیم و از طریق مقادیر دریافتی از JSON فیلد هامون را مقدار دهی میکنیم.

در خط ۱۲ نسبت به ثبت اطلاعات دریافتی در دیتابیساقدام می کنیم و در ادامه تا خط ۱۶ در صورت عدم ذخیره سازی کد وضعیت 400 که به مفهوم مشکل در اطلاعت دریافتی هست را به کلاینت باز میگردونیم.

در صورت عدم بروز مشکل و ثبت یاداشت در پایگاه داده در خط ۱۹ و ۲۰ کد وضعیت ۲۰۱ که به مفهوم ثبت و ایجاد شدن رکورد هست به همراه مسیر دسترسی به رکورد ایجاد شده بر روی سرور در خروجی ارسال میکنیم.

برای تست کد بالا میتوانید دستور زیر را از طریق ترمینال و با استفاده از cURL اجرا نمایید. در دستور زیر ما مقدار عنوان و متن یاداشت را از طریق متد POST و به صورت متن JSON به سرویس ارسال میکنیم.

در صورت عدم بروز مشکل با مراجعه به کلاینت MySQL خود، مشاهده خواهید کرد که رکورد جدیدی با مقدار عنوان و متن موجود در دستور بالا به تیبل یاداشت های شما اضافه خواهد شد.

در ادامه و در کد زیر نحوه پیاده سازی عملیات Read در سرویس را مشاهده می کنید و بعد از اون توضیحاتی در رابطه با هر یک از قسمت های کد ارایه خواهد شد.

در سرویس های REST دسترسی جهت عملیات Read از طریق متد GET پیاده سازی می شود. همانطور که در کد بالا مشاهده می کنید در خط دوم، از طریق روتر Slim مسیری جهت خواندن اطلاعات از طریق متد GET را ایجاد و در خط ۲۵ به عنوان notes/read نام گذاری کردیم.

در خط ۵ کد بالا سعی می کنیم از طریق id ارسال شده رکورد مربوط به یاداشت مورد نظر را پیدا کنیم. در ادامه در خطوط ۷ تا ۱۱ بررسی می کنیم تا در صورتی که رکوردی با شناسه ارسال شده یافت نشد در خروجی کد وضعیت ۴۰۴ به مفهوم اشتباه بودن مسیر را بر می گردانیم.

در صورت پیدا شدن رکورد با شناسه ارسال شده در خطوط ۱۴ تا ۱۸ آبجکتی خالی ایجاد نموده و با مقادیر مربوط به یاداشت یافته شده مقدار دهی می کنیم. سپس در خطوط ۲۱ تا ۲۴ آبجکت ایجاد شده را به متن JSON تبدیل و در خرجی برای کلاینت ارسال می کنیم.

در اینجا قسمت اول این مجموعه به پایان رسید، در قسمت دوم، موارد باقی مانده در خصوص این مطلب، عنوان خواهد شد. در صورتی که سوالی مطرح بود از طریق فرم تماس، قسمت نظرات و یا شبکه های اجتماعی با من در تماس باشید، در حد توان به سوالات شما پاسخگو خواهم بود.

 

4 پاسخ

تعقیب

  1. […] سری مطالب قبلی با عنوان پیاده سازی سرویس RESTful بوسیله Slim در مورد پیاده سازی سرویس REST جهت ثبت و دریافت یاداشت ها […]

  2. […] قسمت اول این مطلب توضیحاتی در مورد چگونگی پیاده سازی یک سرویس […]

  3. […] سری مطالب قبلی با عنوان پیاده سازی سرویس RESTful بوسیله Slim در مورد پیاده سازی سرویس REST جهت ثبت و دریافت یاداشت ها […]

  4. […] قسمت اول این مطلب توضیحاتی در مورد چگونگی پیاده سازی یک سرویس […]

دیدگاه خود را ثبت کنید

Want to join the discussion?
Feel free to contribute!

پاسخ دهید

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