تست کردن پروژهٔ RESTful API با استفاده cURL
در این مطلب قصد داریم در مورد تست کردن RESTful API با cURL توضیح دهیم
اساساً کاربرد نرمافزار Postman و دیگر نرمافزارهای مشابه در محیط توسعه است که در آنها سعی شده تا حد ممکن فضایی مشابه آنچه یک کلاینت واقعی دارا است شبیهسازی شود. حال برای آن که از فضای توسعهٔ کمی فاصله گرفته و محیطی شبیهتر به آنچه یک کلاینتِ ایپیآیِ واقعی دارا است را تجربه کنیم، در این فصل قصد داریم تا یک وب اپلیکیشن دیگر طراحی کنیم که قرار است به عنوان کلاینت وب سرویسی که نوشتهایم عمل کند. در این کلاینت، قصد داریم از یک لایبرری به نام cURL استفاده نماییم و از همین روی، ابتدا به معرفی این لایبرری پرداخته سپس با نحوهٔ استفاده از آن آشنا خواهیم شد.
cURL چیست؟
cURL که نامش برگرفته از واژگان Client URL است، یکی از لایبرریهای پرکاربرد زبان برنامهنویسی پیاچپی است که به منظور ارسال ریکوئستهایی از جنس HTTP مورد استفاده قرار میگیرد. به عبارت دیگر، با استفاده از این لایبرری میتوان یک یوآرال را از داخل سورسکد باز کرده و محتویات آن را دریافت کرد و یا تَسکهای مد نظر خود را روی آن پیاده ساخت.
هشدار
در استفاده از این لایبرری میباید دقت بسیار کرد چرا که ممکن است یوآرالی که با استفاده از این ابزار باز میکنیم حاوی کدهای مخرب باشد.
پیش از شروع استفاده از این لایبرری، با استفاده از کامند زیر میتوان از نصب بودنش روی سیستم اطمینان حاصل کرد:
$ curl --version curl 7.58.0
حال به عنوان یک تست اولیه، فایلی با نامی دلخواه ساخته و کدهای زیر را داخل آن کپی میکنیم:
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://sokanacademy.com'); curl_exec($ch);
با اجرای این فایل در محیط لوکالهاست، میبینیم که وبسایت سکان آکادمی داخل صفحهٔ مرورگر لود خواهد شد و این دقیقاً همان کاربردی است که از cURL انتظار داریم؛ به عبارتی، شبیهسازی آدرس بار مرورگر در داخل سورسکد بدین شکل که با وارد کردن یک یوآرال، محتویاتش بازگردانده شود.
در تفسیر کدهای فوق میتوان گفت که فانکشن ()curl_init این وظیفه را دارا است تا پروسهٔ استفاده از این لایبرری را شروع کند که آن را در متغیری تحت عنوان ch$ ریختهایم. سپس از فانکشی تحت عنوان ()curl_setopt استفاده کردهایم که این وظیفه را دارا است تا آپشنهای مد نظرمان را روی این لایبرری اِعمال کند؛ به طور مثال، دستور دادهایم که مقدار آپشن CURLOPT_URL برابر با یوآرال https://sokanacademy.com باشد و در انتها نیز با دستور ()curl_exec و پاس دادن متغیری که پیش از این ساخته بودیم، ارسال ریکوئست اچتیتیپی را آغاز میکنیم.
پس از آشنایی با سازوکار لایبرری cURL، در ادامهٔ آموزشها پوشهای با نامی دلخواه همچون my-api-tester در مسیر var/www/ ساخته، سپس بر اساس آموزشهای گذشته یک هاست مجازی برای آن میسازیم و در نهایت ساختار زیر داخل آن ایجاد مینماییم:
my-api-tester
├── index.php
├── create
│ ├── curl.php
│ └── index.php
├── delete
│ └── curl.php
├── show
│ ├── curl.php
│ └── index.php
├── signin
│ ├── curl.php
│ └── index.php
├── signup
│ ├── curl.php
│ └── index.php
└── update
├── curl.php
└── index.php
همانطور که ملاحظه میشود، در روت این پروژه یک فایل index.php داریم که به منزلهٔ نقطهٔ شروع این وب اپلیکیشن است سپس برای افزودن قابلیتهای «ورود» و «ثبتنام»، به ترتیب فولدرهایی تحت عناوین signin و signup ساختهایم و فولدرهای update ،create ،show و delete به ترتیب برای انجام عملیات «نمایش یک مقاله»، «ایجاد یک مقالهٔ جدید»، «بهروزرسانی یک مقاله» و «حذف یک مقاله» مورد استفاده قرار خواهند گرفت. همچنین به جز فولدر delete که صرفاً حاوی یک فایل تحت عنوان curl.php است، الباقی فولدرها علاوه بر این فایل، حاوی فایل دیگری به نام index.php هستند که به منزلهٔ View در معماری MVC مورد استفاده قرار خواهند گرفت.
در این وب اپلیکیشن، کلاینت میتواند بدون لاگین کردن به سیستم، لیست مقالات و محتوای آنها را مشاهده نماید اما به منظور ثبت یک مقالهٔ جدید و یا بهروزرسانی/حذف مقالات، نیاز به ثبتنام و لاگین کردن دارد که از همین روی چنین فیچرهایی را داخل فولدرهای signin و signup کدنویسی کردهایم؛
ادامه این آموزش را میتوانید در مطلب بعدی دنبال کنید