آموزش API نویسی در PHP‌ – رایگان و از صفر تا صد

۱۸۶ بازدید
آخرین به‌روزرسانی: ۰۷ فروردین ۱۴۰۳
زمان مطالعه: ۲۴ دقیقه
آموزش API نویسی در PHP‌ – رایگان و از صفر تا صد

امروزه کمتر برنامه‌نویسی را می‌توان یافت که واژه API به گوشش نخورده باشد یا حداقل با این مفهوم کاربردی سروکار نداشته باشد. به زبان ساده APIها مجموعه قوانینی هستند که به نرم‌افزارهای مختلف اجازه برقراری ارتباط با یکدیگر را می‌دهند. با استفاده از این مفهوم توسعه‌دهندگان به سادگی می‌توانند از قابلیت‌های موجود در سایر اپلیکیشن‌ها و سرویس‌ها در برنامه خود استفاده کنند. در این بین زبان PHP با فریمورک‌های متعدد خود بستری بسیار مناسب برای ارتباط با API محسوب می‌شود. بر همین اساس در مطلب پیش‌رو از مجله فرادرس آموزش API نویسی در PHP به صورت پروژه محور مورد بررسی قرار گرفته است.

فهرست مطالب این نوشته

با مطالعه این مطلب با مفاهیم اولیه API، کاربردها، مزایا، روش‌های مختلف ارتباط با API و قوانین ساخت آن آشنا خواهید شد. در این مطلب علاوه بر آموزش API نویسی در PHP نحوه استفاده از APIهای موجود نیز به‌طور کامل توضیح داده شده است.

آموزش API نویسی در PHP

ساخت REST API در زبان برنامه نویسی PHP برخلاف تصور موجود بسیار آسان است و تنها با چند خط کد نویسی می‌توان آن را پیاده‌سازی کرد. آشنایی با زبان برنامه نویسی PHP و سینتکس آن و کمی تجربه در خصوص برنامه نویسی سمت سرور برای ساخت API کافی است.

در این بخش از آموزش API نویسی در PHP ابتدا مفهوم API و کاربردهای مختلف آن در برنامه نویسی مورد بررسی قرار خواهد گرفت. سپس، گام‌های مورد نیاز برای ساخت API عنوان خواهد شد.

API چیست؟

«رابط برنامه نویسی اپلیکیشن» (Application Programming Interface | API) به منظور برقراری ارتباط بین پلتفرم‌ها و برنامه‌های کامپیوتری مورد استفاده قرار می‌گیرد و تبادل داده و اطلاعات مختلف را بین آن‌ها امکان پذیر می‌کند. در واقع، APIها با ارائه مجموعه‌ای از قواعد و دستورالعمل‌ها بر نحوه تعامل این پلتفرم‌ها نظارت می‌کنند.

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

کاربرد API در برنامه نویسی چیست؟

APIها مجموعه‌ای از پروتکل‌ها و قوانینی هستند که تعامل بین برنامه‌های نرم‌افزاری مختلف همچون سرویس‌ها، اپلیکیشن‌ها و پلتفرم‌ها را امکان‌پذیر می‌کنند. بر همین اساس، توسعه‌دهندگان با استفاده از APIهای مختلف به سادگی می‌توانند از قابلیت‌ها و امکانات سایر برنامه‌ها و سرویس‌های توسعه داده شده توسط سایرین در برنامه خود استفاده کنند.

برنامه نویس نشسته روی زمین پشت لپ تاپش در حالی که کره زمین درون صفحه نمایش دیده می شود - آموزش API نویسی در PHP

در واقع، استفاده از API سبب می‌شود تا توسعه‌دهندگان زمان خود را صرف پیاده‌سازی قابلیت‌هایی نکنند که قبلاً توسط سایرین توسعه داده شده است. به عنوان مثال، سرویس Google Map یک API بسیار کاربردی و در عین حال جامع در زمینه استفاده از نقشه‌های آنلاین در برنامه است. توسعه‌دهندگان به سادگی می‌توانند با استفاده از APIهای ارائه شده توسط این سرویس نقشه‌های آنلاین را در اپلیکیشن‌ها و وب‌سایت‌های خود پیاده‌سازی کنند.

API ها چگونه کار می‌کنند؟

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

  • ارسال درخواست از برنامه مبدا به API
  • دریافت درخواست توسط API و ارسال به وب سرور
  • دریافت پاسخ از وب سرور توسط API
  • ارسال پاسخ نهایی توسط API به برنامه مبدا

برای درک بهتر فرایند کار API تصویر زیر به‌طور کامل فرایند ارسال درخواست به API و دریافت پاسخ از آن را نشان می‌دهد.

نمایش نحوه کار API
برای مشاهده در ابعاد بزرگ‌تر روی تصویر کلیک کنید.

مراحل API نویسی در PHP کدامند؟

برای ساخت API در PHP چندین گام اساسی وجود دارد که با انجام آن‌ها می‌توان یک REST API ساده را توسعه داد. در ادامه مراحل API نویسی در PHP آورده شده است.

  • به عنوان نخستین گام باید یک پروژه جدید PHP ایجاد کرد. این کار را می‌توان با استفاده فریمورک‌های موجود نظیر «لاراول» (Laravel) یا از ابتدا با نصب اولیه PHP انجام داد.
  • در گام بعدی باید «نقاط پایانی» (Endpoint) مورد نظر برای API را مشخص کرد. این نقاط پایانی عملکرد کلی API را توصیف می‌کنند. همچنین، داده‌های برگشت داده شده به سرویس گیرنده‌ها نیز توسط این نقاط پایانی تعیین می‌شود.
  • بعد از ایجاد نقاط پایانی باید برای هر کدام از نقاط پایانی ساخته شده یک فایل PHP جدید ایجاد کرد. درون هر کدام از فایل‌های ایجاد شده امکان استفاده از توابع PHP و دستورات موجود برای دریافت داده‌ها از پایگاه داده یا سایر منابع وجود دارد. به عنوان مثال، می‌توان از تابع get_data()  برای دریافت اطلاعات از پایگاه داده MySQL استفاده کرد.
  • در گام بعدی باید تنظیمات مربوط به پاسخ ارسالی از API را انجام داد. برای این منظور می‌توان از تابع header()  برای تعیین کد پاسخ HTTP و از تابع json_encode()  برای تبدیل فرمت داده‌های خروجی به «جیسون» (JSON) استفاده کرد.
  • به عنوان گام نهایی نیز باید API ساخته شده را با ابزارهای تست API نظیر Postman یا با ارسال درخواست HTTP به صورت مستقیم از اسکریپت به سرویس گیرنده آزمایش کرد.

با دنبال کردن مراحل ارائه شده در بالا می‌توان یک REST API ساده در PHP نوشت تا داده‌های مورد نیاز را از طریق HTTP به سرویس گیرندگان برگرداند. البته مراحل و گام‌های ارائه شده در بالا تنها گام‌های اساسی مورد نیاز برای ساخت یک REST API ساده را نشان می‌دهند و جزئیات فنی بسیاری در فرایند توسعه API وجود دارد. در ادامه آموزش API نویسی در PHP به صورت عملی یک REST API ساده را پیاده‌سازی خواهیم کرد.

روش های مختلف ارتباط با API کدامند؟

بعد از درک مفهوم API و نحوه عملکرد آن، آشنایی با انواع پروتکل‌های ارتباطی API از اهمیت بالایی برخوردار است. پروتکل‌های ارتباطی نحوه اتصال API به اینترنت و همچنین نحوه انتقال اطلاعات توسط آن را مشخص می‌کنند. برای درک بهتر مفهوم API و سازوکار پیاده‌سازی آن می‌توانید فیلم آموزشی پیاده‌سازی وب سرویس در PHP فرادرس که لینک آن در ادامه آورده شده است را مشاهده کنید.

پروتکل مورد استفاده در API نحوه طراحی و پیاده‌سازی API را به‌طور کامل تحت تاثیر قرار می‌دهد. بنابراین، آشنایی و شناخت مزایا و معایب پروتکل‌های مختلف ارتباط با API ضروری است. در ادامه مهم‌ترین روش‌های ارتباط با API آورده شده است.

  • API های مبتنی بر REST
  • API های مبتنی بر SOAP
  • API های مبتنی بر GraphQL

در ادامه این بخش به‌طور مختصر هر کدام از روش‌های ارتباط با API مورد بررسی قرار خواهد گرفت.

API های مبتنی بر REST

پروتکل REST را می‌توان شناخته‌ شده‌ترین و پرکاربردترین پروتکل ارتباطی در APIها دانست. در این شیوه ارتباطی مسیرها با استفاده از URL تعریف می‌شوند. بزرگترین مزیت این شیوه ارتباطی در مقایسه با سایر روش‌ها سادگی آن است. در نقطه مقابل، بزرگترین اشکال REST این است که اطلاعات را تنها از طریق پروتکل HTTP می‌تواند منتقل کند. در نتیجه، تنها امکان ارسال متن از طریق این پروتکل وجود دارد و سایر نوع‌های داده قابلیت ارسال ندارند. هر چند توسعه‌دهندگان API می‌توانند با استفاده از پارامترهای قالب‌بندی انتقال متن را به روش‌های پیچیده‌تر انجام دهند. به عنوان مثال، با تعیین نوع محتوا در سربرگ امکان انتقال تصاویر و فایل‌های صوتی از طریق پروتکل HTTP وجود دارد، ولی این فایل‌ها همچنان به عنوان متن‌های رمزگذاری شده ارسال می‌شوند.

برنامه نویس در حال نگاه کردت به صفحه لپ تاپ و توسعه REST API در PHP

API های مبتنی بر SOAP

کلمه SOAP مخفف عبارت «قوانین ساده دسترسی به شی» (Simple Object Access Protocol) است که به عنوان یکی دیگر از روش‌های ارتباط با API شناخته می‌شود. APIهای  مبتنی بر SOAP می‌توانند علاوه بر پروتکل HTTP از سایر پروتکل‌های ارتباطی اینترنتی معروف همچون TCP و SMTP نیز استفاده کنند. در نتیجه، از نظر شیوه‌های ارتباطی SOAP نسبت به HTTP انعطاف پذیری بالاتری دارد. در نقطه مقابل APIهای مبتنی بر SOAP تنها می‌توانند با داده‌های XML کار کنند. همچنین، درخواست‌های مبتنی بر SOAP به پهنای باند بیشتری نسبت به REST نیاز دارند و ساخت و نگه‌داری کدهای SOAP نیز پیچیده‌تر است. در مجموع پروتکل SOAP برای برنامه‌های پیچیده مناسب‌تر است، زیرا قابلیت اطمینان و امنیت بسیار بالایی دارد. در نتیجه، از این پروتکل به‌طور گسترده در حوزه‌های مالی و برنامه‌های سازمانی بزرگ استفاده می‌شود.

API های مبتنی بر GraphQL

GraphQL را نمی‌توان به صورت مجزا در زمره پروتکل‌های ارتباطی API در نظر گرفت. در واقع، GraphQL یک زبان کوئری نویسی متن‌باز است که نخستین بار توسط فیسبوک معرفی شد. GraphQL نیز همانند REST از پروتکل HTTP برای انتقال داده‌های متنی در هر درخواست استفاده می‌کند، ولی این کار را با رویکردی کاملاً متفاوت انجام می‌دهد. در این روش ارتباطی کاربر دقیقاً داده مورد نیاز خود را توصیف می‌کند و در مقابل همان داده را بدون هیچ گونه داده اضافی دریافت ‌می‌کند. APIهای مبتنی بر GraphQL مزایای بسیاری در امر توسعه دارند که در ادامه مهم‌ترین مزایای این APIها آورده شده است.

  • انعطاف پذیری بسیار بالایی در زمینه جستجو دارد.
  • نیازی به تعیین نسخه‌های مختلف برای API نیست.
  • دارای ساختاری با «نوع‌بندی قوی» (Strongly Typed) است.
  • GraphQL از واکشی بیش از حد داده‌ها جلوگیری می‌کند.

پیش‌تر در مطلب زیر از مجله فرادرس آموزش مقدماتی GraphQL به‌طور کامل مورد بررسی قرار گرفته است.

REST API چیست؟

کلمه REST مخفف عبارت «انتقال بازنمودی حالت» (Representational State Transfer) است که به عنوان یک شیوه معماری یا الگوی طراحی برای APIها مورد استفاده قرار می‌گیرد. APIهای RESTful در واقع وب سرویس‌هایی هستند که از این سبک معماری استفاده می‌کنند. معماری REST بر مبنای اصول پروتکل HTTP پیاده‌سازی شده است که به منظور ارتباط بین سیستم‌های مختلف در سطح اینترنت مورد استفاده قرار می‌گیرد.

کاربردهای REST API چیست؟

با استفاده از REST در پیاده‌سازی API می‌توان از درخواست‌های ساده HTTP برای بازیابی یا دستکاری داده‌ها در وب سرور استفاده کرد. به عنوان مثال، می‌توان از درخواست GET برای دریافت اطلاعات از سرور، از درخواست POST برای ایجاد منبعی جدید در سرور، از درخواست PUT برای بروزرسانی منبع موجود و از درخواست DELETE برای حذف یک منبع استفاده کرد. به‌طور کلی، REST یک الگوی طراحی ساده و انعطاف پذیر است که علاوه بر سهولت در استفاده مزایای زیادی نیز برای ساخت نرم‌افزارهای مبتنی بر شبکه دارد.

برنامه نویس نشسته در کنار پنجره و با لپ تاپش در حال کد نویسی است - آموزش API نویسی در PHP

توسعه‌دهندگان با استفاده از REST می‌توانند وب سرویس‌هایی ایجاد کنند که به سادگی با سایر سیستم‌ها ادغام شوند. در نتیجه، REST را می‌توان گزینه مناسبی برای ساخت API در PHP دانست. بر همین اساس در ادامه این نوشته آموزش API نویسی در PHP بر مبنای الگوی طراحی REST توضیح داده خواهد شد.

یادگیری API نویسی در PHP با فرادرس

فیلم آموزش پیاده سازی وب سرویس در پی اچ پی PHP
برای دسترسی به فیلم آموزش پیاده سازی وب سرویس در PHP فرادرس، روی تصویر کلیک کنید.

برای یادگیری API نویسی در PHP به عنوان نخستین گام نیاز است تا مفاهیم اولیه API نظیر معماری REST، پروتکل HTTP و قالب‌ داده‌ای JSON و XML را یاد بگیرید. در گام بعدی برای تسهیل فرایند توسعه API باید یک فریمورک را انتخاب کنید. برای این منظور می‌‌توانید از فریمورک‌های لاراول، سیمفونی، Lumen و Slim کمک بگیرید. در انتها باید API ساخته شده را مورد آزمایش قرار دهید و مستندات آن را ایجاد کنید.

به عنوان نخستین گام در مسیر API نویسی می‌توانید فیلم آموزش پیاده‌سازی وب سرویس در PHP فرادرس را مشاهده کنید که لینک آن در زیر آورده شده است:

برای ادامه مسیر یادگیری API نویسی در PHP نیز می‌توانید دوره‌های آموزش ویدیویی فرادرس را به ترتیبی که در زیر ارائه شده است مشاهده کنید.

قوانین ساخت REST API کدامند؟

برای ساخت APIهای مبتنی بر REST مجموعه‌ای از محدودیت‌ها و قوانین وجود دارد که نحوه ساخت و استفاده از آن‌ها را مشخص می‌کنند. قوانین ساخت RESTful API با عنوان «محدودیت‌های طراحی» (Design Constraints) شناخته می‌شوند. در این نوشته آموزش API نویسی در PHP بر مبنای الگوی طراحی REST خواهد بود. بنابراین، به عنوان نخستین گام لازم است تا قوانین ساخت REST API مورد بررسی قرار گیرد. با رعایت محدودیت‌های طراحی می‌توان یک REST API با امنیت و قابلیت نگهداری بالا در اختیار داشت. در ادامه محدودیت‌های اصلی طراحی برای ساخت REST API آورده شده است.

رابط سازگار

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

سرویس گیرنده و سرویس دهنده

محدودیت «سرویس گیرنده» (Client) و «سرویس دهنده» (Server) بر استقلال و جدا بودن این دو بخش از یکدیگر تاکید دارد. به عبارت دیگر این دو بخش باید از یکدیگر جدا باشند و امکان توسعه جداگانه و مستقل هر کدام از آن‌ها وجود داشته باشد. این محدودیت به سرویس گیرنده و سرویس دهنده اجازه می‌دهد تا به‌طور مستقل توسعه داده شوند. همچنین، امکان تغییر یک بخش بدون تاثیر بر بخش دیگر نیز وجود خواهد داشت. استقلال این دو بخش از یکدیگر مقیاس پذیری برنامه را نیز افزایش می‌دهد و توسعه را نیز سریع‌تر و کارآمدتر می‌کند.

مستقل از موقعیت

محدودیت مستقل از موقعیت در طراحی REST API بر این اصل اشاره دارد که درخواست‌ از سرویس گیرنده تنها باید شامل اطلاعات لازم برای درخواست باشد و سرویس دهنده نباید هیچ گونه اطلاعاتی از سرویس گیرنده در درخواست‌ها ذخیره کند. بر اساس این اصل REST API نباید هیچ گونه وابستگی نسبت به داده‌های ذخیره شده در سرویس گیرنده داشته باشد که در نتیجه آن مقیاس پذیری سرور نیز افزایش می‌یابد.

قابل ذخیره‌سازی

بر اساس این اصل پاسخ‌های دریافت شده از سمت سرور باید شامل اطلاعاتی در خصوص امکان ذخیره‌سازی نتایج و مدت ذخیره‌سازی آن‌ها در حافظه پنهان باشد. این اصل با امکان ذخیره‌سازی پاسخ‌ها بار سرور را کاهش می‌دهد و موجب بهبود عملکرد API می‌شود. نکته‌ حائز اهمیت در این خصوص این است که پاسخ‌ها در سمت سرویس گیرنده ذخیره می‌شوند. با ذخیره برخی از اطلاعات در سمت سرویس گیرنده تعداد درخواست‌ها به API کاهش می‌یابد و این امر بهره‌وری را افزایش می‌دهد.

سیستم لایه‌ای

الگوی طراحی REST API باید بر مبنای سیستم لایه‌ای پیاده‌سازی شود. سیستم‌های لایه‌ای از چندین لایه مختلف تشکیل می‌شوند که هر کدام از لایه‌ها نیز عملکرد و مسئولیت خاص خود را دارند. در این سیستم هر کدام از لایه‌ها می‌توانند عملکرد جدیدی را به API اضافه کنند. این محدودیت در طراحی REST API موجب درک بهتر نحوه کار آن می‌شود و افزودن یا حذف عملکرد از آن را نیز ممکن می‌کند.

کد برحسب تقاضا

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

آموزش API نویسی در PHP به صورت عملی

بعد از معرفی گام‌های اساسی برای ساخت API زمان آن فرا رسیده است تا به صورت عملی یک REST API در PHP ایجاد کنیم. بر همین اساس در این بخش از آموزش API نویسی در PHP یک برنامه ساده توسعه داده خواهد شد که اطلاعات مربوط به کاربران را از پایگاه داده MySQL از طریق تعریف نقاط پایانی در REST API دریافت خواهد کرد.

ایجاد ساختار اولیه پروژه اولین گام از آموزش API نویسی در PHP

به عنوان گام نخست از ساخت API نیاز است تا ساختار اولیه پروژه مشخص شود. ساختار اولیه پروژه ساخت API در PHP به صورت زیر خواهد بود.

1├── Controller
2│   └── Api
3│       ├── BaseController.php
4│       └── UserController.php
5├── inc
6│   ├── bootstrap.php
7│   └── config.php
8├── index.php
9└── Model
10    ├── Database.php
11    └── UserModel.php

در ادامه توضیحاتی در خصوص هر کدام از بخش‌های تشکیل دهنده پروژه آورده شده است.

  • index.php: این فایل به عنوان نقطه ورود برنامه شناخته می‌شود و مدیریت تمامی درخواست‌های برنامه از طریق این فایل صورت می‌گیرد.
  • inc/config.php: اطلاعات مربوط به پیکربندی کلی پروژه در این فایل صورت می‌گیرد. به‌طور کلی اطلاعات مربوط به پیکربندی پایگاه داده در این فایل انجام می‌شود.
  • inc/bootstrap.php: اطلاعات مورد نیاز جهت اضافه کردن فریمورک «بوت استرپ» (Bootstrap) به برنامه درون این فایل قرار می‌گیرد.
  • Model/Database.php: لایه دسترسی به پایگاه داده برای ارتباط با پایگاه داده MySQL در این بخش مشخص می‌شود.
  • Model/UserModel.php: کدهای مورد نیاز جهت دریافت اطلاعات جدول users  در این بخش قرار می‌گیرند.
  • Controller/Api/BaseController.php: این فایل مربوط به کنترل کننده پایه برنامه است که متدهای کاربردی رایج درون آن قرار می‌گیرند.
  • Controller/Api/UserController.php: کدهای مورد نیاز برای درخواست‌های REST API در این بخش قرار می‌گیرند.

در ادامه بعد از مشخص کردن تنظیمات اولیه پروژه هر کدام از بخش‌های ارائه شده در بالا به‌طور کامل پیاده‌سازی خواهد شد.

ایجاد پایگاه داده

در این بخش از ساخت API نیاز است تا پایگاه داده و جدول users  ایجاد شود. در ادامه نیز کلاس‌های مورد نیاز برای واکشی اطلاعات جدول users  از پایگاه داده پیاده‌سازی خواهد شد.

ساخت پایگاه داده و جدول users

در نخستین گام باید پایگاه داده rest_api_demo  ایجاد شود. برای این منظور می‌توان از دستورات «خط فرمان» (Command Line) در ترمینال MySQL استفاده کرد. قطعه کد زیر پایگاه داده rest_api_demo  را ایجاد می‌کند.

1$CREATE DATABASE rest_api_demo;

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

1$use rest_api_demo;
2$CREATE TABLE `users` (
3  `user_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
4  `username` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
5  `user_email` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
6  `user_status` int(11) NOT NULL DEFAULT '0',
7  PRIMARY KEY (`user_id`)
8) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

بعد از ایجاد جدول فوق نیاز است تا برای آزمایش اطلاعاتی در جدول وارد شود.

ساخت کلاس برای دریافت اطلاعات جدول

در ادامه باید فایل Database.php  در پوشه Model ایجاد شود. قطعه کد زیر برای این منظور آورده شده است.

1<?php
2class Database
3{
4    protected $connection = null;
5    public function __construct()
6    {
7        try {
8            $this->connection = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE_NAME);
9    	
10            if ( mysqli_connect_errno()) {
11                throw new Exception("Could not connect to database.");   
12            }
13        } catch (Exception $e) {
14            throw new Exception($e->getMessage());   
15        }			
16    }
17    public function select($query = "" , $params = [])
18    {
19        try {
20            $stmt = $this->executeStatement( $query , $params );
21            $result = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);				
22            $stmt->close();
23            return $result;
24        } catch(Exception $e) {
25            throw New Exception( $e->getMessage() );
26        }
27        return false;
28    }
29    private function executeStatement($query = "" , $params = [])
30    {
31        try {
32            $stmt = $this->connection->prepare( $query );
33            if($stmt === false) {
34                throw New Exception("Unable to do prepared statement: " . $query);
35            }
36            if( $params ) {
37                $stmt->bind_param($params[0], $params[1]);
38            }
39            $stmt->execute();
40            return $stmt;
41        } catch(Exception $e) {
42            throw New Exception( $e->getMessage() );
43        }	
44    }
45}

قطعه کد ارائه شده در لایه دسترسی به پایگاه داده قرار می‌گیرد که ارتباط با پایگاه داده MySQL را امکان پذیر می‌کند. علاوه بر این، متدهای کاربردی select  و executeStatement  به منظور اجرای کوئری و دریافت اطلاعات مورد نیاز از پایگاه داده درون این فایل پیاده‌سازی شده‌اند. برای دریافت اطلاعات جدول users  نیز از فایل UserModel.php  در پوشه Model باید استفاده کرد. قطعه کد زیر باید درون این فایل قرار گیرد.

1<?php
2require_once PROJECT_ROOT_PATH . "/Model/Database.php";
3class UserModel extends Database
4{
5    public function getUsers($limit)
6    {
7        return $this->select("SELECT * FROM users ORDER BY user_id ASC LIMIT ?", ["i", $limit]);
8    }
9}

در قطعه کد ارائه شده در بالا متد getUsers  به منظور دریافت اطلاعات جدول users  از پایگاه داده پیاده‌سازی شده است.

ساخت لایه اپلیکیشن

در این بخش از آموزش API نویسی در PHP سایر فایل‌های مربوط به لایه اپلیکیشن پیاده‌سازی خواهد شد.

فایل‌های پوشه inc

چندین فایل مربوط به لایه اپلیکیشن پروژه در این بخش قرار می‌گیرد که به ترتیب هر کدام از این فایل‌ها پیاده‌سازی خواهد شد. به عنوان نخستین مورد به سراغ فایل config.php  خواهیم رفت که کدهای آن به صورت زیر خواهد بود.

1<?php
2define("DB_HOST", "localhost");
3define("DB_USERNAME", "demo");
4define("DB_PASSWORD", "demo");
5define("DB_DATABASE_NAME", "rest_api_demo");

قطعه کد مشخص شده در بالا پیکربندی کلی پروژه و پایگاه داده را مشخص می‌کند. در ادامه نیاز است تا فایل bootstrap.php  نیز در همین مسیر پیاده‌سازی شود. قطعه کد زیر پیاده‌سازی این فایل را نشان می‌دهد.

1<?php
2define("PROJECT_ROOT_PATH", __DIR__ . "/../");
3// include main configuration file 
4require_once PROJECT_ROOT_PATH . "/inc/config.php";
5// include the base controller file 
6require_once PROJECT_ROOT_PATH . "/Controller/Api/BaseController.php";
7// include the use model file 
8require_once PROJECT_ROOT_PATH . "/Model/UserModel.php";
9?>

در این فایل مسیردهی سایر فایل‌های مهم پروژه نظیر config.php  ، UserModel.php  و BaseController.php  صورت گرفته است.

فایل‌های پوشه Controller

در این بخش فایل‌های مربوط به لایه کنترلر پروژه مشخص خواهند شد که بخش اصلی منطق برنامه را تشکیل می‌دهند. به عنوان نخستین مورد کدهای مربوط به پیاده‌سازی فایل BaseController.php  ارائه شده است.

1<?php
2class BaseController
3{
4    /** 
5* __call magic method. 
6*/
7    public function __call($name, $arguments)
8    {
9        $this->sendOutput('', array('HTTP/1.1 404 Not Found'));
10    }
11    /** 
12* Get URI elements. 
13* 
14* @return array 
15*/
16    protected function getUriSegments()
17    {
18        $uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
19        $uri = explode( '/', $uri );
20        return $uri;
21    }
22    /** 
23* Get querystring params. 
24* 
25* @return array 
26*/
27    protected function getQueryStringParams()
28    {
29        return parse_str($_SERVER['QUERY_STRING'], $query);
30    }
31    /** 
32* Send API output. 
33* 
34* @param mixed $data 
35* @param string $httpHeader 
36*/
37    protected function sendOutput($data, $httpHeaders=array())
38    {
39        header_remove('Set-Cookie');
40        if (is_array($httpHeaders) && count($httpHeaders)) {
41            foreach ($httpHeaders as $httpHeader) {
42                header($httpHeader);
43            }
44        }
45        echo $data;
46        exit;
47    }
48}

کدهای ارائه شده در بالا منطق اصلی پروژه را تشکیل می‌دهند. به عنوان مثال، متد __call  زمانی فراخوانی می‌شود که کاربر قصد فراخوانی متدهای تعریف نشده در برنامه را دارد. در این شرایط صفحه خطا به کاربر نشان داده می‌شود. در ادامه کدهای مربوط به پیاده‌سازی فایل UserController.php  آورده شده است.

1<?php
2class UserController extends BaseController
3{
4    /** 
5* "/user/list" Endpoint - Get list of users 
6*/
7    public function listAction()
8    {
9        $strErrorDesc = '';
10        $requestMethod = $_SERVER["REQUEST_METHOD"];
11        $arrQueryStringParams = $this->getQueryStringParams();
12        if (strtoupper($requestMethod) == 'GET') {
13            try {
14                $userModel = new UserModel();
15                $intLimit = 10;
16                if (isset($arrQueryStringParams['limit']) && $arrQueryStringParams['limit']) {
17                    $intLimit = $arrQueryStringParams['limit'];
18                }
19                $arrUsers = $userModel->getUsers($intLimit);
20                $responseData = json_encode($arrUsers);
21            } catch (Error $e) {
22                $strErrorDesc = $e->getMessage().'Something went wrong! Please contact support.';
23                $strErrorHeader = 'HTTP/1.1 500 Internal Server Error';
24            }
25        } else {
26            $strErrorDesc = 'Method not supported';
27            $strErrorHeader = 'HTTP/1.1 422 Unprocessable Entity';
28        }
29        // send output 
30        if (!$strErrorDesc) {
31            $this->sendOutput(
32                $responseData,
33                array('Content-Type: application/json', 'HTTP/1.1 200 OK')
34            );
35        } else {
36            $this->sendOutput(json_encode(array('error' => $strErrorDesc)), 
37                array('Content-Type: application/json', $strErrorHeader)
38            );
39        }
40    }
41}

کلاس UserController  ارائه شده در بالا شامل متدهایی است که با نقاط پایانی REST API مرتبط هستند. به عنوان مثال، متد listAction  به منظور دریافت لیست کاربران از جدول users  پیاده‌سازی شده است. علاوه بر این، می‌توان سایر متدهای مورد نیاز را در این فایل پیاده‌سازی کرد.

ساخت فایل index.php

به عنوان آخرین گام از ساخت API در PHP در این بخش باید فایل index.php  را پیاده‌سازی کرد. این فایل نقطه ورود اپلیکیشن را مشخص می‌کند و دسترسی به REST API از طریق این فایل امکان پذیر است. کدهای مربوط به پیاده‌سازی این فایل به صورت زیر است.

1<?php
2require __DIR__ . "/inc/bootstrap.php";
3$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
4$uri = explode( '/', $uri );
5if ((isset($uri[2]) && $uri[2] != 'user') || !isset($uri[3])) {
6    header("HTTP/1.1 404 Not Found");
7    exit();
8}
9require PROJECT_ROOT_PATH . "/Controller/Api/UserController.php";
10$objFeedController = new UserController();
11$strMethodName = $uri[3] . 'Action';
12$objFeedController->{$strMethodName}();
13?>

با توجه به مثال بالا توابع parse_url  و explode  به منظور پردازش URL درخواستی توسط کاربر و ذخیره نتیجه در متغیر $uri  مورد استفاده قرار گرفته‌اند. در ادامه نیز شی جدیدی از کلاس UserController  ایجاد شده و متدهای مورد نیاز توسط آن فراخوانی شده‌اند.

فراخوانی REST API آخرین گام از آموزش API نویسی در PHP

بعد از ساخت کلاس‌ها و فایل‌های مورد نیاز در این بخش از آموزش API نویسی در PHP نحوه فراخوانی REST API در PHP توضیح داده خواهد شد. برای این منظور باید نقاط پایانی تعریف شده در REST API برای دریافت لیست کاربران فراخوانی شوند. URL مربوط به نقطه پایانی برنامه به صورت زیر خواهد بود.

1// https://localhost/index.php/{MODULE_NAME}/{METHOD_NAME}?limit={LIMIT_VALUE} 
2http://localhost/index.php/user/list?limit=20

با فراخوانی فایل index.php  آدرس مربوط به نقطه پایانی تعریف شده در بالا پردازش خواهد شد. بنابراین، خروجی نهایی با توجه به متدهای مشخص شده در URL نمایش داده می‌شود. خروجی حاصل از فراخوانی REST API به صورت زیر خواهد بود.

[
   {
      "user_id":1,
      "username":"Bob",
      "user_email":"bob@gmail.com",
      "user_status":0
   },
   {
      "user_id":2,
      "username":"John",
      "user_email":"john@gmail.com",
      "user_status":1
   },
   {
      "user_id":3,
      "username":"Mark",
      "user_email":"mark@gmail.com",
      "user_status":1
   },
   {
      "user_id":4,
      "username":"Ville",
      "user_email":"ville@gmail.com",
      "user_status":0
   }
]

همان طور که در بالا نیز نشان داده شده است با فراخوانی REST API در PHP اطلاعات موجود در جدول users  در قالب JSON برگشت داده می‌شود.

تست REST API در PHP

بعد از آموزش API نویسی در PHP باید به مبحث تست و اشکال‌زدایی از API نیز توجه کرد. اشکال‌زدایی و تست REST API یکی از مهم‌ترین مراحل توسعه API است. هدف از این کار شناسایی هرگونه خطا یا اشکال در کد است که ممکن است بر عملکرد API تاثیر منفی بگذارد. انجام این مرحله برای اطمینان حاصل کردن از امنیت و کارایی API و جلوگیری از بروز هر گونه خطاهای پیش‌بینی نشده ضروری است.

برنامه نویس در حالی که فنجانی در دست دارد به دنبال تست و اشکال‌زدایی از API است - آموزش API نویسی در PHP

در این بخش از آموزش API نویسی در PHP سعی شده است تا چندین روش و ابزار کاربردی به منظور اشکال‌زدایی از REST API در PHP معرفی شود. رایج‌ترین روش‌های اشکال‌زدایی از API به شرح زیر هستند.

تست خودکار

تست خودکار شامل نوشتن چندین «آزمایه» (Test-Case) برای هر کدام از نقاط پایانی API است که از نحوه عملکرد هر کدام از آن‌ها اطمینان حاصل می‌کند. این نوع تست را می‌توان با استفاده از فریمورک‌هایی نظیر PHPUnit یا Behat پیاده‌سازی کرد. به‌طور کلی تست خودکار به شناسایی خطاهای موجود در همان مراحل اولیه توسعه بسیار کمک می‌کند. همچنین، این روش در مقایسه با اشکال‌زدایی به صورت دستی سریع‌تر است و در زمان و منابع نیز صرفه‌جویی می‌کند.

تست دستی

هر چند تست خودکار یکی از بهترین روش‌ها برای آزمایش API است، اما برای اطمینان از عملکرد API می‌توان به صورت دستی نیز آزمایش‌های لازم را انجام داد. در این روش درخواست‌های HTTP به صورت دستی به نقاط پایانی API ارسال می‌شوند و نتیجه هر کدام مورد بررسی قرار می‌گیرد. با استفاده از ابزارهایی نظیر Postman یا cURL می‌توان این مدل درخواست‌‌ها را ارسال و نتیجه را بررسی کرد.

استفاده از لاگ‌ها

استفاده از «لاگ‌» (Log) یکی از روش‌های مرسوم اشکال‌زدایی و یافتن خطا است که توسط بسیاری از برنامه‌نویسان مورد استفاده قرار می‌گیرد. در واقع، لاگ‌های برنامه به‌طور پیوسته توسعه‌دهندگان را در جریان اتفاقات برنامه قرار می‌دهند. با استفاده از این روش توسعه‌دهندگان به سرعت می‌توانند خطاها یا اشکالات موجود در REST API را شناسایی کنند.

ابزارهای تست API

استفاده از ابزارهای تست API یکی دیگر از روش‌های تست و اشکال‌زدایی REST API است. به عنوان مثال، ابزارهایی همچون Xdebug با تقسیم‌بندی کد به چند بخش، تعیین نقاط شکست و بررسی متغیرهای موجود در برنامه فرایند اشکال‌زدایی را بسیار آسان می‌کنند. از این ابزارها برای شناسایی مشکلات کد می‌توان استفاده کرد. بررسی کد یکی از کارهای ضروری در فرایند توسعه است و این امر برای اشکال‌زدایی و تست REST API اهمیت بالایی دارد.

بهترین فریمورک های ساخت API در PHP کدامند؟

فریمورک‌ها با توجه به فراهم آوردن امکانات و ابزارهای متعدد فرایند ساخت API را بسیار آسان می‌کنند. در زبان برنامه نویسی PHP چندین فریمورک و ماژول مختلف برای ساخت REST API در اختیار توسعه‌دهندگان قرار گرفته است.

در ادامه محبوب‌ترین فریمورک‌های PHP در زمینه ساخت API آورده شده است.

  • Laravel: این فریمورک را می‌توان جامع‌ترین فریمورک PHP دانست که ابزارهای مختلفی را نیز برای ساخت REST API در اختیار توسعه‌دهندگان قرار می‌دهد. از جمله مهم‌ترین ویژگی‌های این فریمورک می‌توان به مستندات فراوان و جامعه توسعه‌دهندگی فعال آن اشاره کرد.
  • Lumen: فریمورک «لومن» (Lumen) نسخه کوچک شده لاراول است که به‌طور خاص برای ساخت REST API طراحی شده است. این میکرو فریمورک سرعت بسیار زیادی دارد و ابزارهای مختلفی نیز برای کار با درخواست‌ها و پاسخ‌ها در اختیار توسعه‌دهندگان قرار می‌دهد.
  • Guzzle: این ابزار یکی از کتابخانه‌های PHP است که با درخواست‌ها و پاسخ‌های HTTP سروکار دارد. از این کتابخانه کاربردی می‌توان برای ساخت REST API در PHP استفاده کرد. کتابخانه Guzzle رابط کاربری ساده و آسانی را برای کار با داده‌های HTTP فراهم کرده است.
  • Epiphany: میکرو فریمورک Epiphany یکی دیگر از فریمورک‌های PHP برای ساخت REST API است. این میکرو فریمورک در عین سهولت در استفاده ابزارهای مختلفی را برای رسیدگی به درخواست‌های HTTP، مسیریابی و رسیدگی به خطا فراهم می‌کند.

هر کدام فریمورک‌های ارائه شده در بالا مزایا و معایب خاص خود را دارند و توسعه‌دهندگان PHP باید با توجه‌ به نیاز پروژه خود نسبت به انتخاب بهترین گزینه اقدام کنند. به عنوان یکی از نکات آموزش API نویسی در PHP توصیه می‌شود تا در زمان انتخاب هر کدام از فریمورک‌ها عوامل مهمی همچون سهولت استفاده، عملکرد و جامعه توسعه‌دهندگی را مد نظر قرار دهید.

مزایای API نویسی در PHP

REST APIها به دلیل سادگی، انعطاف پذیری و مقیاس پذیری بالا برای ساخت وب سرویس‌ها مشهور شده‌اند. در این بخش از نوشته بعد از آموزش API نویسی در PHP برخی از مهم‌ترین مزایای ساخت REST API در PHP عنوان شده است.

وابستگی سست

APIهای مبتنی بر REST موجب برقراری «وابستگی سست» (Loose Coupling) بین سرویس دهنده و سرویس گیرنده می‌شوند. در نتیجه، انجام تغییرات در هر کدام از آن‌ها کمترین تاثیر را بر روی دیگری خواهد داشت. این ویژگی به این دلیل است که REST APIها برای ارتباط از پروتکل HTTP استفاده می‌کنند.

مقیاس پذیری

REST APIها از مقیاس پذیری بسیار بالایی برخوردار هستند، زیرا نیازمندی چندانی برای زیرساخت سمت سرور ندارند. از نکات جالب توجه REST APIها این است که با توجه به رشد و گسترش برنامه به سادگی می‌توان منابع و سرویس‌های جدیدی برای پاسخگویی به تقاضای فزاینده برنامه ایجاد کرد.

برنامه نویس در اتاق کارش پشت لپ تاپ نشسته و در حال ساخت API است - آموزش API نویسی در PHP

قابلیت همکاری

REST APIها از قابلیت همکاری بسیار بالایی برخوردار هستند و به سادگی با سایر سیستم‌ها ادغام می‌شوند. این مورد به این دلیل است که REST APIها مبتنی بر پروتکل استاندارد HTTP و فرمت‌های داده‌ای هستند. با توجه با قابلیت همکاری بالای REST APIها و شیوه‌های ارتباطی مختلف موجود در آن دیگر هیچ گونه نگرانی از بابت اتصال برنامه‌های تلفن همراه، وب اپلیکیشن‌ها و سرویس‌های بک اند وجود ندارد.

کارایی

REST APIها از این بابت سبک و سریع هستند که با ساختار داده‌های پیچیده و پروتکل‌های ارتباطی درگیر نیستند. این ویژگی REST APIها را به گزینه مناسبی برای ساخت وب سرویس‌هایی تبدیل کرده است که باید حجم بسیار زیادی از داده و ترافیک توسط آن‌ها مدیریت شود.

انعطاف پذیری بالا

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

نگهداری آسان

نگه‌داری REST APIها بر مبنای پروتکل‌های استاندارد و فرمت‌های داده‌ای صورت می‌گیرد. در نتیجه، توسعه‌دهندگان تازه کار نیز به سادگی می‌توانند آن‌ها را درک کنند، حتی اگر پیش از این با API کار نکرده باشند.

مستقل از زبان

برای ساخت REST API از زبان‌های برنامه نویسی مختلفی می‌توان استفاده کرد. در این شرایط دست توسعه‌دهنده برای انتخاب زبان برنامه نویسی باز خواهد بود. بنابراین، توسعه‌دهندگان می‌توانند با توجه به تخصص خود و نیاز پروژه بهترین زبان را برای ساخت API انتخاب کنند. البته این بین باید به این نکته اشاره کرد که زبان برنامه نویسی PHP یکی از بهترین زبان‌ها برای ساخت REST API است. به همین دلیل نیز در این نوشته آموزش API نویسی در PHP مورد بررسی قرار گرفته است. با استفاده از زبان PHP می‌توان REST APIهای جذابی ساخت که وب سرویس‌های کاربردی را در اختیار کاربران قرار دهند.

نمونه‌های کاربردی استفاده از API در دنیای واقعی

امروزه استفاده از API و کاربردهای آن به قدری گسترده شده است که تقریباً تمامی افراد جامعه از کاربران عادی گرفته تا توسعه‌دهندگان حرفه‌ای همگی به نوعی با آن سروکار دارند. البته این کاربرد گسترده چندان ملموس نیست، زیرا APIها زیرساخت اصلی نرم‌افزارها و برنامه‌های کاربردی را تشکیل می‌دهند.

REST APIها به دلیل سادگی، انعطاف پذیری و مقیاس پذیری بالا به‌طور گسترده در ساخت برنامه‌های تحت وب مورد استفاده قرار می‌گیرند. در این بخش از نوشته آموزش API نویسی در PHP با چندین نمونه استفاده از REST API در دنیای واقعی آشنا خواهید شد. در ادامه رایج‌ترین موارد استفاده از REST API در دنیای واقعی آورده شده است.

یکپارچه سازی شبکه‌های اجتماعی

توسعه‌دهندگان با استفاده از REST API می‌توانند شبکه‌های اجتماعی محبوب نظیر فیسبوک، توییتر و اینستاگرام را با وب‌سایت‌های مبتنی بر PHP ادغام کنند. در نتیجه، با یکپارچه سازی شبکه‌های اجتماعی در وب سایت PHP امکان دسترسی به داده‌های کاربر نظیر لیست دوستان، وضعیت‌ها و سایر موارد وجود خواهد داشت. به عنوان مثال، کاربران در بسیاری از وب‌سایت‌ها به جای ساخت حساب کاربری و احراز هویت می‌توانند از حساب کاربری خود در سایر پلتفرم‌ها نظیر فیسبوک یا گوگل برای این منظور استفاده کنند. تمام این موارد به لطف REST APIها امکان پذیر شده است.

تجارت الکترونیک

با استفاده از REST API می‌توان پلتفرم‌های «تجارت الکترونیک» (e-Commerce) نظیر Shopify و Magneto را با وب‌سایت‌های توسعه داده شده با زبان PHP ادغام کرد. با استفاده از این پلتفرم‌ها توسعه‌دهندگان امکان دسترسی به محصولات، اطلاعات مشتریان و داده‌های مربوط به سفارش‌ها را دارند.

برنامه نویس در حال نگاه کردن به مانیتور و ساخت وب سایت تجارت الکترونیک است - آموزش API نویسی در PHP

سیستم های مدیریت محتوا

یکی دیگر از موارد استفاده REST API توانایی آن‌ در ادغام «سیستم‌های مدیریت محتوا» (Content Management Systems) معروف نظیر وردپرس و دروپال با وب‌سایت‌های توسعه داده شده با زبان PHP است. این قابلیت به توسعه‌دهندگان امکان می‌دهد تا مطالب موجود در وبلاگ و سایر محتواها را با استفاده از این پلتفرم‌ها در وب‌سایت خود نمایش دهند.

سیستم های جامع ارتباط با مشتریان

با استفاده از REST API می‌توان «سیستم‌های مدیریت ارتباط با مشتریان» (Customer Relationships Management Systems | CRM) نظیر Salesforce و Hubspot را با وب‌سایت‌‌های توسعه داده شده با PHP ادغام کرد. مدیران شرکت‌ها و صاحبان کسب و کار با استفاده از این سیستم‌های نرم‌افزاری می‌توانند به سادگی با مشتریان خود ارتباط برقرار کنند. همچنین، امکان دسترسی به تمام داده‌های مربوط به مشتریان از طریق این پلتفرم‌ها وجود دارد.

اپلیکیشن‌های موبایل

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

برنامه نویس نشسته پشت لپ تاپ و در حال توسعه برنامه هواشناسی با استفاده از API است

آموزش استفاده از APIهای موجود در PHP

ساخت API فرایندی جذاب است و توسعه‌دهندگان می‌توانند تمام نیازمندی‌های پروژه خود را از طریق آن پیاده‌سازی کنند. با این وجود گاهی اوقات برای صرفه‌جویی در زمان و منابع می‌توان از APIهای موجود و در دسترس استفاده کرد.

امروزه شرکت‌های فعال در حوزه تکنولوژی سرویس‌های متعددی برای امور مختلف نظیر پیش‌بینی وضعیت آب و هوا، نقشه‌ آنلاین، امور بانکی، خدمات شهری و سایر موارد در اختیار توسعه‌دهندگان قرار داده‌اند. بر همین اساس، در تکمیل مباحث ارائه شده در این بخش از آموزش API نویسی در PHP نحوه استفاده از APIهای موجود و پیاده‌سازی آن‌ها در پروژه توضیح داده شده است.

آموزش استفاده از API هواشناسی در PHP

سرویس OpenWeatherMap (+) یکی از بهترین سرویس‌های ارائه دهنده API است که پیش‌بینی وضعیت آب و هوا را ارائه می‌دهد. این سرویس محبوب حجم زیادی از داده‌های آب و هوایی را به‌طور منظم ارائه می‌دهد. نکته مهم در خصوص این سرویس رایگان بودن آن است که در برخی موارد پیشرفته دسترسی به سرویس‌های آن مستلزم پرداخت هزینه است.

صفحه ثبت نام در سایت openweatherapi
برای مشاهده در ابعاد بزرگ‌تر روی تصویر کلیک کنید.

برای استفاده از API ارائه شده توسط این سرویس یا هر سرویس دیگری در گام نخست نیاز است تا مستندات ارائه شده توسط سرویس به‌طور کامل مطالعه شوند. بعد از مطالعه مستندات ارائه شده در سایت برای استفاده از این API در PHP نیاز است تا مراحل زیر به ترتیب انجام شود.

  • دریافت کلید API
  • یافتن شناسه شهر مورد نظر
  • ارسال درخواست برای پیش‌بینی وضعیت آب و هوا با کلید API و شناسه شهر

دریافت کلید API از OpenWeatherMap

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

دریافت کلید API از سایت openweather
برای مشاهده در ابعاد بزرگ‌تر روی تصویر کلیک کنید.

یافتن شناسه شهر مورد نظر

برای دریافت اطلاعات آب و هوایی هر شهری از طریق OpenWeatherMap نیاز است تا شناسه شهر مورد نظر در زمان درخواست به API ارسال شود. برای این منظور لیست فشرده تمام شهرها و شناسه مربوط به هر کدام از طریق این لینک (+) قابل دسترسی است. بعد از دانلود فایل مورد نظر باید آن را از حالت فشرده خارج کرد. پس از خارج کردن فایل از حالت فشرده می‌توان اطلاعات کاملی با فرمت داده JSON را در خصوص شهرهای مختلف مشاهده کرد. به عنوان گام نهایی نیاز است تا شناسه شهر مورد نظر را برای ارسال به API کپی کنید.

ارسال درخواست به API

بعد از دریافت کلید API و شناسه شهر برای دریافت اطلاعات آب و هوایی نیاز است تا این دو پارامتر هنگام درخواست به API ارسال شوند. در زمان درخواست کلید API و شناسه شهر به نقطه پایانی مشخص شده API ارسال می‌شوند. قطعه کد PHP زیر با استفاده از کتابخانه CURL درخواست مورد نظر را به API ارسال می‌کند و نتیجه را نیز در قالب JSON برمی‌گرداند.

1<?php
2$apiKey = "API KEY";
3$cityId = "CITY ID";
4$googleApiUrl = "https://api.openweathermap.org/data/2.5/weather?id=" . $cityId . "&lang=en&units=metric&APPID=" . $apiKey;
5
6$ch = curl_init();
7
8curl_setopt($ch, CURLOPT_HEADER, 0);
9curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
10curl_setopt($ch, CURLOPT_URL, $googleApiUrl);
11curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
12curl_setopt($ch, CURLOPT_VERBOSE, 0);
13curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
14$response = curl_exec($ch);
15
16curl_close($ch);
17$data = json_decode($response);
18$currentTime = time();
19?>

کد HTML زیر نیز با پردازش اطلاعات دریافتی از API خروجی حاصل را نمایش می‌دهد.

1<!doctype html>
2<html>
3<head>
4<title>Forecast Weather using OpenWeatherMap with PHP</title>
5</head>
6<body>
7    <div class="report-container">
8        <h2><?php echo $data->name; ?> Weather Status</h2>
9        <div class="time">
10            <div><?php echo date("l g:i a", $currentTime); ?></div>
11            <div><?php echo date("jS F, Y",$currentTime); ?></div>
12            <div><?php echo ucwords($data->weather[0]->description); ?></div>
13        </div>
14        <div class="weather-forecast">
15            <img
16                src="https://openweathermap.org/img/w/<?php echo $data->weather[0]->icon; ?>.png"
17                class="weather-icon" /> <?php echo $data->main->temp_max; ?>°C<span
18                class="min-temperature"><?php echo $data->main->temp_min; ?>°C</span>
19        </div>
20        <div class="time">
21            <div>Humidity: <?php echo $data->main->humidity; ?> %</div>
22            <div>Wind: <?php echo $data->wind->speed; ?> km/h</div>
23        </div>
24    </div>
25</body>
26</html>

خروجی نهایی به صورت زیر خواهد بود.

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

جمع‌بندی

امروزه REST APIها با فراهم کردن امکان ارتباط بین سیستم‌ها و دستگاه‌های مختلف نقش بسیار مهمی در دنیای فناوری دارند. زبان برنامه نویسی PHP نیز به عنوان یکی از محبوب‌ترین زبان‌های برنامه نویسی سمت سرور شناخته می‌شود که فریمورک‌های بسیار قدرتمندی را برای توسعه REST API در دسترس توسعه‌دهندگان قرار داده است. در این مطلب از مجله فرادرس اصول اولیه کار با REST API به‌طور کامل توضیح داده شد. در صورتی که علاقه‌مند به یادگیری زبان برنامه نویسی PHP هستید می‌توانید مجموعه فیلم‌های آموزشی PHP فرادرس که لینک آن در ادامه آورده شده است را مشاهده کنید.

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

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Boltic+envato tutsphppot
نظر شما چیست؟

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