درآمدی بر ساختار پروژهٔ RESTful API


پروژه‌ای که در این دورهٔ آموزشی خواهیم نوشت مبتنی فریمورکی است که در دورهٔ آموزش معماری MVC توسعه دادیم؛ لذا گذراندن این دوره و آشنایی با ساختار این فریمورک پیش از ادامه دادن این سری از آموزش‌ها الزامی است.

مسلماً بسته به نیازهای خاص این دوره، بخشی‌های از فریمورک فوق‌الذکر را تغییر داده‌ایم که در ادامه ابتدا نگاهی به ساختار پروژه انداخته سپس به بررسی تغییرات آن خواهیم پرداخت:

rest-api-blog
├── app
│   ├── Api
│   │   ├── Config
│   │   │   └── Database.php
│   │   ├── Controllers
│   │   │   └── DefaultController.php
│   │   └── Models
│   └── Core
│       ├── App.php
│       ├── BaseController.php
│       └── Routing.php
├── composer.json
├── public
│   └── index.php
└── vendor
    ├── autoload.php
    └── composer
        ├── autoload_classmap.php
        ├── autoload_namespaces.php
        ├── autoload_psr4.php
        ├── autoload_real.php
        ├── autoload_static.php
        ├── ClassLoader.php
        └── LICENSE

پوشه‌ای ساخته‌ایم تحت عنوان rest-api-blog که حاوی فولدرها و فایل‌های فوق است و همان‌طور که ملاحظه می‌شود، داخل پوشهٔ Core فایلی داریم به نام Routing.php که این وظیفه را دارا است تا لینک‌های معتبر این پروژه را مشخص سازد به طوری که در حال حاضر به صورت زیر است:

<?php
namespace Core;

class Routing
{
    public $routes = [
        [
            'route' => 'api/v1/articles',
            'module' => 'Api',
            'controller' => 'DefaultController',
            'action' => 'index',
        ],
    ];

    public function __construct()
    {
        return $this->routes;
    }
}

در واقع، چنانچه کاربر یوآر‌ال api/v1/articles را در مرورگر وارد سازد، اکشنی تحت عنوان index داخل کنترلر DefaultController فراخوانی خواهد شد که در ادامهٔ آموزش‌ها خواهیم دید ریکوئست‌ها چگونه داخل این اَکشن هندل می‌شوند (جهت آشنایی بیشتر با سازوکار این کلاس، می‌توانید به آموزش ساخت کلاس Routing در معماری MVC مراجعه نمایید.)

آشنایی با نحوهٔ ایجاد Virtual Host برای پروژه

در این بخش، نحوهٔ ایجاد یک هاست مجازی (Virtual Host) در سیستم‌عامل اوبونتو را مورد بررسی قرار خواهیم داد. ابتدا در مسیر var/www/ فولدری تحت عنوان rest-api-blog ساخته سپس به مسیر etc/apache2/sites-available/ رفته و این فایل را با ادیتور دلخواه خود باز می‌کنیم.

به خاطر داشته باشید
به منظور اِعمال تغییرات در این فایل،‌ نیاز به سطح دسترسی روت (ادمین) خواهیم داشت.

با مد نظر قرار دادن نکتهٔ‌ فوق، با استفاده از کامند زیر این فایل را باز می‌نماییم:

$ sudo gedit /etc/apache2/sites-available/000-default.conf

حال نیاز است تا در انتهای این فایل، خطوط زیر را درج نماییم:

<VirtualHost *:80> 
    ServerName rest-api-blog.local
     DocumentRoot /var/www/rest-api-blog/public/
	<Directory /var/www/rest-api-blog/public/>
	    AllowOverride All
	</Directory>
</VirtualHost>

دستور 80:* حاکی از آن است که هر ریکوئستی به پورت پیش‌فرض اچ‌تی‌تی‌پی (۸۰) ارسال شود، با این هاست مجازی مَچ خواهد شد. همان‌طور که ملاحظه می‌شود، برای کلید ServerName آدرسی دلخواه همچون rest-api-blog.local در نظر گرفته‌ سپس محل قرارگیری فولدر پروژه به آدرس /var/www/rest-api-blog.local/public/ را برای کلید DocumentRoot در نظر گرفته‌ایم. همچنین دستور AllowOverride مشخص می‌سازد که تنظیمات موجود در فایل htaccess. تنظیمات پیش‌فرض آپاچی را اُورراید کنند.

به خاطر داشته باشید
همان‌طور که می‌بینیم، در انتهای آدرس پروژه فولدر public درج شده است به این خاطر که نقطهٔ شروع این وب اپلیکیشن فایلی تحت عنوان index.php است که داخل پوشهٔ public قرار دارد و از آنجا که وب سرور آپاچی فایلی با این نام را به صورت پیش‌فرض شناسایی خواهد کرد، لذا نیاز به درج نام فایل نیست.

پس از ذخیره‌ کردن تغییرات صورت‌گرفته در این فایل، در ادامه نیاز است تا این هاست مجازی را فعال‌ سازیم که برای این منظور می‌باید فایل زیر را باز نموده و آدرس هاست مجازی خود را داخل آن ثبت نماییم:

$ sudo gedit /etc/hosts

اکنون آدرس زیر را در این فایل درج نموده و آن را ذخیره می‌نماییم:

127.0.0.1 rest-api-blog.local

در این مرحله از کار، پروسهٔ کانفیگ هاست مجازی به پایان رسیده است اما به منظور اِعمال تغییرات، نیاز است تا وب سرور آپاچی را ری‌استارت نماییم که برای این منظور می‌توانیم از کامند service apache2 restart استفاده نماییم به طوری که پس از وارد کردن پسورد روت، وب سرور آپاچی ری‌استارت شده و از این پس هاست مجازی‌مان قابل‌استفاده است.

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


بهزاد مرادی

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