كيفية كتابة REST API بلغة PHP في 30 دقيقة: دليل خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

كيفية كتابة REST API بلغة PHP في 30 دقيقة



REST API (Representational State Transfer) هو نمط معماري للتفاعل بين مكونات التطبيق الموزع عبر الشبكة. في تطوير الويب الحديث، يُعتبر REST API المعيار لإنشاء الواجهة الخلفية لتطبيقات الجوال، وتطبيقات الصفحة الواحدة (SPA)، والخدمات المصغرة. في هذه المقالة، سنعرض كيفية كتابة REST API بسيط ولكنه يعمل بكامل وظائفه بلغة PHP في 30 دقيقة فقط.



سنقوم بإنشاء API لإدارة قائمة المهام (Todo List) مع دعم عمليات CRUD (إنشاء، قراءة، تحديث، حذف). ستتعلم كيفية تنظيم التوجيه، ومعالجة طلبات JSON، والاتصال بقاعدة بيانات MySQL.



تجهيز البيئة



لبدء العمل، ستحتاج إلى:

  • خادم ويب Apache أو Nginx يدعم PHP 7.4+
  • MySQL أو MariaDB
  • محرر أكواد (VS Code, PhpStorm)
  • Postman أو curl لاختبار API


قم بإنشاء هيكل المشروع:

todo-api/├── index.php          # نقطة الدخول (الموجه)├── config.php         # إعدادات الاتصال بقاعدة البيانات├── api/│   └── tasks.php      # منطق العمل مع المهام└── .htaccess          # إعدادات إعادة كتابة URL


الخطوة 1: إعداد .htaccess ونقطة الدخول



قم بإنشاء ملف .htaccess لإعادة توجيه جميع الطلبات إلى index.php:

RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]


الآن سننشئ index.php — الموجه الرئيسي لدينا:

<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization");

// معالجة طلبات preflightif ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit();}

require_once 'config.php';require_once 'api/tasks.php';

$url = isset($_GET['url']) ? rtrim($_GET['url'], '/') : '';$urlParts = explode('/', $url);$resource = $urlParts[0] ?? '';$id = $urlParts[1] ?? null;

switch ($resource) { case 'tasks': $tasks = new Tasks(); echo $tasks->handleRequest($_SERVER['REQUEST_METHOD'], $id); break; default: http_response_code(404); echo json_encode(["message" => "Resource not found"]); break;}?>


الخطوة 2: الاتصال بقاعدة البيانات



قم بإنشاء config.php مع إعدادات الاتصال:

<?phpclass Database {    private $host = "localhost";    private $db_name = "todo_api";    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->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { http_response_code(500); echo json_encode(["message" => "Database connection error"]); exit(); } return $this->conn; }}?>


قم بإنشاء جدول في MySQL:

CREATE DATABASE todo_api;USE todo_api;

CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, status ENUM('pending', 'completed') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);


الخطوة 3: تنفيذ عمليات CRUD



قم بإنشاء ملف api/tasks.php مع المنطق الرئيسي:

المدونات

توصيات الكتب