آموزش رایگان PHP

آموزش ساخت REST API در PHP به صورت اصولی و استاندارد (گوگل فرندلی)

1405/08/02 15:59 محراب حسن زاده
آموزش ساخت REST API در PHP به صورت اصولی و استاندارد (گوگل فرندلی)

مقدمه؛ چرا باید طراحی REST API استاندارد را یاد بگیریم؟

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

معماری REST چیست و چه قواعدی دارد؟

معماری REST (Representational State Transfer) مجموعه‌ای از اصول طراحی است که به کلاینت و سرور اجازه می‌دهد بدون وابستگی شدید به یکدیگر، با هم ارتباط برقرار کنند. در این معماری، هر موجودیت (مانند کاربر یا مقاله) به عنوان یک Resource در نظر گرفته می‌شود که با یک آدرس منحصر‌به‌فرد (URI) و با استفاده از متدهای استاندارد HTTP مدیریت می‌شود:

  • GET: برای دریافت داده‌ها
  • POST: برای ایجاد داده جدید
  • PUT: برای بروزرسانی کامل داده موجود
  • DELETE: برای حذف داده

تنظیم هدرهای پاسخ (Response Headers) در PHP

اولین گام در طراحی یک API با کیفیت، مشخص کردن نوع محتوای خروجی و دسترسی‌های مجاز (CORS) است. یک API استاندارد همواره پاسخ خود را در قالب JSON ارسال می‌کند. کد زیر نحوه تعریف این هدرها را در ابتدای اسکریپت PHP نشان می‌دهد:


// هدرهای استاندارد برای پاسخ‌های JSON و اجازه دسترسی خارج از دامنه (CORS)
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

اتصال به دیتابیس با استفاده از PDO

برای ایجاد ارتباطی امن و بهینه با دیتابیس در PHP، همواره توصیه می‌شود از PDO (PHP Data Objects) استفاده کنید تا در برابر حملات تزریق SQL (SQL Injection) مقاوم باشید. کلاس زیر یک الگو برای مدیریت اتصال است:


class Database {
    private $host = "localhost";
    private $db_name = "my_api_db";
    private $username = "root";
    private $password = "";
    public $conn;

    public function getConnection(){
        $this->conn = null;
        try {
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
            $this->conn->exec("set names utf8");
        } catch(PDOException $exception) {
            echo "خطا در اتصال به دیتابیس: " . $exception->getMessage();
        }
        return $this->conn;
    }
}

مدیریت درخواست‌ها و متدهای مختلف HTTP

برای پاسخ به متدهای گوناگون، ابتدا باید متد ارسالی توسط کلاینت را با استفاده از متغیر سراسری $_SERVER['REQUEST_METHOD'] تشخیص دهیم. در ادامه، یک نمونه ساده از پیاده‌سازی متدهای GET و POST را مشاهده می‌کنید:


include_once 'Database.php';

$database = new Database();
$db = $database->getConnection();

$request_method = $_SERVER["REQUEST_METHOD"];

switch($request_method) {
    case 'GET':
        // فرآیند دریافت داده‌ها
        getUsers($db);
        break;
    case 'POST':
        // دریافت داده‌های خام ارسالی (JSON payload)
        $data = json_decode(file_get_contents("php://input"));
        if(!empty($data->name) && !empty($data->email)) {
            createUser($db, $data);
        } else {
            http_response_code(400); // Bad Request
            echo json_encode(array("message" => "داده‌های ارسالی ناقص هستند."));
        }
        break;
    default:
        http_response_code(405); // Method Not Allowed
        echo json_encode(array("message" => "متد مورد نظر پشتیبانی نمی‌شود."));
        break;
}

function getUsers($db) {
    // کوئری دریافت کاربران و ارسال پاسخ با کد وضعیت 200
    http_response_code(200);
    echo json_encode(array("status" => "success", "data" => []));
}

function createUser($db, $data) {
    // کوئری درج کاربر جدید و ارسال پاسخ با کد وضعیت 210 یا 201 (Created)
    http_response_code(201);
    echo json_encode(array("status" => "success", "message" => "کاربر با موفقیت ایجاد شد."));
}

استانداردهای مهم گوگل برای توسعه REST API

برای اینکه API توسعه یافته شما در رتبه‌بندی‌های فنی و امنیتی گوگل نمره قبولی دریافت کند، سه قاعده زیر را رعایت کنید:

  1. استفاده درست از کدهای وضعیت HTTP: کدهای سری 200 به معنای موفقیت، سری 400 نشان‌دهنده خطای سمت کاربر و سری 500 نمایانگر خطای سرور هستند.
  2. طراحی ساختار پاسخ یکپارچه: همیشه پاسخ‌های خود را در یک فرمت استاندارد (مثلاً داشتن فیلدهای status، message و data) کپسوله‌سازی کنید.
  3. امن‌سازی اتصالات (HTTPS): هیچ‌گاه داده‌های حساس کلاینت را بر بستر ناامن HTTP انتقال ندهید.

پیشنمایش

پرسش و پاسخ

نظری یافت نشد

مطالب مشابه

آموزش کامل کار با تابع password_verify در PHP (امنیت رمز عبور)
1405/05/14 22:09

آموزش کامل کار با تابع password_verify در PHP (امنیت رمز عبور)

مطالعه بیشتر
آموزش کامل include و require در PHP + تفاوت‌های کلیدی و کاربردی
1405/05/01 20:28

آموزش کامل include و require در PHP + تفاوت‌های کلیدی و کاربردی

مطالعه بیشتر
آموزش جامع و کاربردی کار با فایل‌ها در PHP
1405/05/04 23:14

آموزش جامع و کاربردی کار با فایل‌ها در PHP

مطالعه بیشتر
آموزش اصولی Insert اطلاعات در دیتابیس طبق استانداردهای گوگل
1405/05/13 20:58

آموزش اصولی Insert اطلاعات در دیتابیس طبق استانداردهای گوگل

مطالعه بیشتر
مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on
1402/06/28 23:53

مقدمه‌ای به رویدادها و دستورات در Vue.js: نحوه مدیریت و استفاده از v-on

مطالعه بیشتر
آموزش کامل دریافت اطلاعات فرم با متدهای GET و POST در PHP (با رعایت اصول امنیتی)
1405/04/27 22:06

آموزش کامل دریافت اطلاعات فرم با متدهای GET و POST در PHP (با رعایت اصول امنیتی)

مطالعه بیشتر
آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای
1403/08/12 20:28

آموزش استفاده از cubic-bezier در CSS برای انیمیشن‌های سفارشی و حرفه‌ای

مطالعه بیشتر
آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب
1403/08/09 20:59

آموزش استفاده از position در CSS: نحوه موقعیت‌دهی عناصر در صفحات وب

مطالعه بیشتر
آموزش اصول Web APIs و نحوه استفاده از آن‌ها در جاوا اسکریپت: راهنمای کامل با مثال‌ها
1403/08/01 20:05

آموزش اصول Web APIs و نحوه استفاده از آن‌ها در جاوا اسکریپت: راهنمای کامل با مثال‌ها

مطالعه بیشتر
آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای
1402/06/18 22:48

آموزش انیمیشن‌های پیشرفته با keyframes در CSS: طراحی حرکات پویا و چند مرحله‌ای

مطالعه بیشتر
راهنمای جامع مدیریت پکیج‌ها در PHP با Composer (طبق استانداردهای گوگل)
1405/07/28 22:53

راهنمای جامع مدیریت پکیج‌ها در PHP با Composer (طبق استانداردهای گوگل)

مطالعه بیشتر
آموزش ساخت یک گالری تصویر با استفاده از جاوا اسکریپت: راهنمای گام به گام
1403/08/03 16:57

آموزش ساخت یک گالری تصویر با استفاده از جاوا اسکریپت: راهنمای گام به گام

مطالعه بیشتر

تمامی حقوق معتلق به ناشر سایت است و کپی از آن پیگرد قانونی دارد