ساخت وب سرویس RESTful در php

  • آپدیت شده در تاریخ

ساخت وب سرویس RESTful در php

وب سرویس RESTful (یا REST مخفف Representational state transfer) یک سبک معماری است . وب سرویس هایی که از قوانین REST پیروی می کنند , سرویس های Restful هستند .

در سرویس های Restful , آدرس های URI برای دسترسی به منابع (resources) استفاده می شوند . در واژگان Restful در واقع ما داده ها (Data) و توابع (function) ها را resource می نامیم .

بنابراین داده و توابع مواردی هستند که ما توسط سرویس ها به آنها دسترسی پیدا میکنیم.

در آموزش قبلی وب سرویس restful چیست تمام موارد پایه ای و لازم آورده شده که میتوانید برای ادامه آن را مطالعه بفرمایید.

همچنین آموزش ساخت وب سرویس SOAP که در بانک ها و معمولا درگاه های پرداخت استفاده می شود را می توانید مطالعه بفرمایید.

در اینترنت آموزش های زیادی برای ساخت وب سرویس RESTful وجود دارد ولی نهایتا هیچ یک از آنها حتی از یک قانون REST پیروی نمی کنند و از همان روش های oldSchool که درخواست به یک URL خام و دریافت خروجی آن بصورت داده json است, بهره می برند.!

در این آموزش, به شما نحوه ساخت وب سرویس RESTful در php  را نشان می دهیم .

 

اینجا من از هیچ فریمورکی مثل لاراول (laravel) برای ساخت وب سرویس RESTful در php استفاده نمی کنم . بلکه فقط از php خام بهره می بریم.

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

مراحل ساخت وب سرویس RESTful در php

  • ساخت وب سرویس RESTful
  • با PHP خام , بدون استفاده از هیچ فریمورکی
  • الگوهای URL باید از قوانین REST پیروی کنند.
  • سرویس RESTful باید قابلیت پاسخ به درخواست ها در فرمت داده json و یا xml را داشته باشد.
  • باید طبق سناریو های مختلف قابلیت تفکیک کد وضعیت HTTP را داشته باشد.
  • قابلیت تشریح هدر های درخواست (Request Header) داشته باشد.
  • تست وب سرویس RESTful توسط کلاینت REST

مثال ساخت وب سرویس RESTful در php

کد php زیر یک کلاس اصلی برای استدلال وبسرویس RESTful است .

ساخت URI وب سرویس RESTful (URI Mapping)

در هنگام ساخت وب سرویس RESTful از url های فرمت بندی شده استفاده کنید . با استفاده از فایل HTACCESS می توانید قابلیت پیمایش URL را بین درخواست و فایل اصلی را داشته باشید . در این مثال ما از دو آدرس URL استفاده می کنیم .

برای دریافت لیست همه موبایل ها :

برای دریافت لیست جزئیات موبایل ها توسط ID . در مثال زیر ‘۲’ آی دی موبایل است .

فایل .htaccess زیر برای پیمایش بین URL و ارسال درخواست به فایل PHP به کار می رود .

کنترلر وب سرویس RESTful

در فایل .htaccess , ما همه درخواست ها را به فایل RestController.php با کلیدی به نام view برای شناسایی نوع درخواست هدایت (forward) می کنیم.

کد php زیر مربوط به فایل RestController.php است که برای دریافت درخواست و هندل کردن آن بر اساس متد تعریف شده استفاده می شود . از کلید view برای شناسایی نوع درخواست URL استفاده می کنیم .

یک کلاس پایه ای RESTful

کلاس (class) زیر دارای چند متد است که معمولا در هندلر تمام سرویس RESTful استفاده می شود . یکی از متد ها برای ساختن پاسخ (response) و دیگری برای ذخیره کد وضعیت HTTP و پیام های مربوطه به صورت آرایه ای و key/value تعریف شده اند .

توابع معمول دیگری هم می توانید به این کلاس اضافه و آن را به عنوان کلاس پایه هندلر سرویس RESTful خود استفاده کنید.

هندلر وب سرویس RESTful

در هنگام ساخت وب سرویس RESTful در php نیاز است به چند مورد دقت کنید .

اول اینکه هندلر REST تصمیم دارد در چه فرمت داده ای  پاسخ درخواست را برگشت دهد . این موضوع بر اساس پارامتر Accept در هدر درخواست تعیین می شود . در اینجا زمانی که درخواستی ارسال شد باید همراه درخواست, پارامتر Accept در هدر ارسالی ست شود . این مقادیر می تواند “application/json” یا application/xml و یا text/html باشد .

دومین موردی که باید دقت کنید , کد های وضعیت (Status Code) است . برای حالت موفقیت آمیز , کد وضعیت ۲۰۰ را برای پاسخ ست و اسال کنید . به طور مشابه , کد های وضعیت متفاوتی وجود دارند که بنابر وضعیت پیش آمده نیاز است که ارسال شود . برای دیدن همه کدهای وضعیت و توضیحات آن ها مقاله کد وضعیت HTTP را مطالعه بفرمایید.

 

تست کلاینت وب سرویس RESTful

مرحله آخر از ساخت وب سرویس RESTful در php تست سمت کلاینت وب سرویس است . برای آزمایش کلاینت وب سرویس RESTful , راه های مختلفی وجود دارد .

کلاینت های مستقل زیادی در مارکت ها وحود دارد که معمولا از پلاگین گوگل کروم (Google Chrome) برای شبیه سازی کلاینت REST استفاده میکنم . Advanced Rest Client یکی از پلاگین های گوگل کروم برای تست قسمت کلاینت REST است . این extension را نصب و همانند تصویر زیر استفاده کنید .

اسکرین شات های زیر از تست وب سرویس RESTful بر روی گوگل کروم است .

خروجی XML وب سرویس RESTful

ساخت وب سرویس RESTful در php

خروجی jSON وب سرویس RESTful

ساخت وب سرویس RESTful در php

جمع بندی

همانطور که دیدید مبحث ساخت وب سرویس RESTful در php بسیار چالش برانگیز و جالب است و برای تبادل داده بین پلتفرم های مختلف مثال اندروید و وب بسیار این نوع استایل برای وب سرویس مناسب اس.

بسیاری از کاربران به ظاهر حرفه ای ولی مبتدی از روش های قدیمی برای تبادل داده بین پلتفرم ها استفاده میکنند که اغلب هم بسیار آسیب پذیر هستند و آن کارایی و توسعه پذیری را ندارند .

ولی استفاده است قوانین REST برای ساخت وب سرویس های RESTful امروزه بسیار کاربری و پر استفاده است و در پروژه های Cross-Platform ی که می نویسید برای حرفه ای تر شدن کار از REST استفاده کنید .

امیدوارم از آموزش ساخت وب سرویس RESTful در php لذت برده باشید . در مقاله های بعدی در مورد انجام عملیات CRUD بر روی دیتابیس به واسطه REST , احراز هویت , موارد کاربردی دیگر را با شما به اشتراک خواهم گذاشت .

برای دانلود سورس کد کامل از دانلود باکس استفاده کنید

هر سوالی داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۴)

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

  1. داود ۲۵ شهریور ۱۳۹۸

    سلام.
    آیا restful سرویس صرفا مربوط به بخش php و هست یا شامل فایل های جاوا در اندروید هم میشه؟

    پاسخ
    1. حسن شفیعی ۲۵ شهریور ۱۳۹۸

      سلام. rest یک استاندارد هستش و اصلا تکنولوژی یا ابزار یا کتابخانه یا هیچ چیز نیست پس قابل تعمیم به تمام زبان ها که به نحوی با url و وب کار می کنند, میتونه باشه

      پاسخ
  2. ترنم ۲۱ اسفند ۱۳۹۷

    سلام. مطلبتون عالی بود. خسته نباشید. یه سوال داشتم ازتون . مزایای این که واسه این جور کدا از فریمورک خاصی استفاده نمی کنید چیه

    پاسخ
    1. حسن شفیعی ۲۲ اسفند ۱۳۹۷

      سلام. خوشحالم که مفید واقع شده. ممنون.
      به دلیل اینکه تنوع فریمورک ها زیاد است و همچنین شاید دوستانی که این مطالب را دنبال می کنند هنوز به سراغ فریمورک خاصی نرفتند و با php خالص کد می زنند, سعی کردیم در بیشتر مطالب آموزشی به اینصورت فهم کدها را چه برای دوستانی که از فریمورک استفاده می کنند یا از php خالص برای کدنویسی بهره می برند, آسان تر کنیم .

      موفق باشید.

      پاسخ
دوره های آموزشی