افزودن قابلیت CRUD برای پروژهٔ تِستِر RESTful API


در این آموزش قصد داریم تا قابلیت CRUD یا به عبارتی افزودن فیچرهایی از جمله «نمایش یک مقاله»، «افزودن یک مقالهٔ جدید»، «ویرایش یک مقاله» و «حذف یک مقاله» را مورد بررسی قرار دهیم.

به خاطر داشته باشید
سرواژهٔ CRUD برگرفته از کلمات Update ،Read ،Create و Delete است.

به منظور نمایش محتوای یک مقاله،‌ فولدری می‌سازیم تحت عنوان show و داخل آن دو فایل تحت عناوین curl.php و index.php می‌سازیم به طوری که فایل curl.php می‌باید حاوی کدهای زیر باشد:

<?php
$articleId = $_GET['id'];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://rest-api-blog.local/api/v1/articles/' . $articleId);
curl_setopt($curl, CURLOPT_HTTPHEADER, ['content-type: application/json']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
    echo $err;
} else {
    $response = json_decode($result, true);
}

در تفسیر کدهای فوق می‌توان گفت که ابتدا متغیری ساخته‌ایم تحت عنوان articleId$ که مقدارش برابر با پارامتر id است که در فایل index.php که در آموزش گذشته تکمیل نمودیم تنظیم شده است به طوری که داریم:

<a href="show/index.php?id=<?= $article['articleId'] ?>">
    <?= $article['articleTitle'] ?>
</a>

الباقی تنظیمات کِرل همچون آموزش گذشته است با این توضیح که CURLOPT_URL حاوی مقداری به صورت زیر است:

curl_setopt($curl, CURLOPT_URL, 'http://rest-api-blog.local/api/v1/articles/' . $articleId);

همان‌طور که می‌بینیم، اِندپوینت مربوطه را نوشته سپس متغیر articleId$ را اصطلاحاً به آن کانکت کرده‌ایم. حال نوبت به تکمیل فایل index.php می‌رسد که داخل پوشهٔ show قرار دارد به طوری که خواهیم داشت:

<!DOCTYPE html>
<html>
    <head>
        <title>Show Article</title>
        <meta charset="utf-8">
    </head>
    <body>
        <h1>Show Article</h1>
        <?php require_once('curl.php'); ?>
        <?php if ($response['response']) { ?>
            <div>
                <strong><?= $response['response']['message'][0]['articleTitle'] ?></strong>
            </div>
            <div>
                <?= $response['response']['message'][0]['articleBody'] ?>
            </div>
            <div>
                Category Name: <?= $response['response']['message'][0]['catName'] ?>
            </div>
            <div>
                Written By: <?= $response['response']['message'][0]['authorFirstName'] . ' ' . $response['response']['message'][0]['authorLastName'] . ' in ' . $response['response']['message'][0]['time'] ?>
            </div>
            <a href="../update/index.php?id=<?= $response['response']['message'][0]['articleId'] ?>">Update this article</a>
            <br>
            <a href="../delete/curl.php?id=<?= $response['response']['message'][0]['articleId'] ?>" onclick="return confirm('Are you sure you want to delete this article?');">Delete this article</a>
        <?php } ?>
    </body>
</html>

با توجه به اینکه برای نمایش دیتا نیاز به اجرای فایل curl.php داریم، می‌بینیم که در خط نهم و با استفاده از دستور ()require_once این فایل را به فایل موجود ایمپورت کرده‌ایم و سپس با استفاده از یک دستور شرطی سنجیده‌ایم ببینیم که آیا آرایهٔ ['response['response$ سِت شده است یا خیر که اگر این گونه بود، محتوای این آرایه را چاپ کرد‌ایم.

در انتهای این صفحه، لینکی به منظور آپدیت این مقاله درج کرده‌ایم با این توضیح که به عنوان مقدار اتریبیوت href از علامت /.. استفاده کرده‌ایم سپس وارد پوشهٔ update شده و فایل index.php را فراخوانی کرده‌ایم؛ در حقیقت، علت درج /.. آن است که برای دستیابی به پوشهٔ update ابتدا می‌باید از پوشهٔ show خارج شویم و علامت /.. همین کار را انجام خواهد داد. در نهایت هم پارامتری تحت عنوان id در نظر گرفته و مقدار آن را برابر با کلید articleId قرار داده‌ایم.

در ادامه، دکمهٔ دیگری به منظور حذف مقاله ایجاد کرده‌ایم که ساختارش شباهت بسیاری به دکمهٔ ویرایش مقاله دارد با این تفاوت که به فولدر delete ارجاع داده می‌شود مضاف بر اینکه برای جلوگیری از حذف سهوی یک مقاله، اتریبویت onclick را با استفاده از جاوااسکریپت نوشته و به عنوان مقدار آن دستور ()confirm را ریترن کرده‌ایم و به عنوان آرگومان این تابع نیز استرینگی با مضمون «آیا از حذف این مقاله اطمینان دارید؟» در نظر گرفته‌ایم به طوری که از این پس با کلیک برای روی دکمهٔ حذف، یک پاپ‌آپ جاوااسکریپتی در معرض دید کاربر قرار می‌گیرد که با کلیک بر روی دکمهٔ OK، پروسهٔ حذف تکمیل خواهد شد.

لازم به یادآوری است که به منظور انجام عملیاتی همچون درج یک مقالهٔ جدید، به‌روزرسانی یا حذف مقالات، نیاز است تا کاربر در این وب سرویس لاگین باشد که در همین راستا، ابتدا به تکمیل پوشه‌های signin و signup پرداخته سپس پوشه‌های update ،create و delete را تکمیل خواهیم نمود.

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

جمع‌بندی
در این آموزش دیدیم که به چه شکل می‌توان یک پروژهٔ وب اپلیکیشن ساده ساخت که بتواند به طور عملی با پروژهٔ RESTful API که در این دورهٔ آموزشی ساختیم ارتباط برقرار سازد. در این تِستِر، کلیهٔ تَسک‌هایی که وب سرویس مذکور گنجانده شده بودند را پیاده‌سازی نمودیم اما در عین حال توجه داشته باشیم که می‌توان این وب اپلیکیشن تست‌کننده را بهبود به مراتب بیشتری بخشیده و اصول توسعهٔ نرم‌افزار را بیشتر در آن رعایت نمود (سورس‌کد کامل این پروژهٔ تِستِر از لینک زیر در دسترس است.)

دانلود فایل‌های تمرین

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان