پایگاه آی‌دی اِی‌پی‌آی
«کدنویسی، پروژه، موفقیت»


آموزش API و برنامه‌نویسی وب در ۵ گام ساده (۱۴۰۴)

آموزش ساخت API با PHP

IDAPI.IR – برنامه‌نویسی، طراحی وب و راهکارهای دیجیتال

آموزش ساخت API با PHP در ۵ گام ساده (۱۴۰۴) + کد رایگان

سلام دوستان! اگر شما هم مثل من به عنوان یک برنامه‌نویس وب، همیشه به دنبال راه‌های ساده و کارآمد برای اتصال اپلیکیشن‌ها یا سایت‌های مختلف به هم هستید، حتماً با مفهوم API آشنا شدید. API یا رابط برنامه‌نویسی کاربردی، پلی هست که اجازه می‌ده داده‌ها بین سیستم‌های مختلف جابه‌جا بشن. تو این مقاله، می‌خوام بهتون آموزش بدم چطور یک REST API ساده با PHP بسازید – از صفر تا صد، با تمرکز روی گام‌های عملی و کدهای واقعی. این آموزش برای سال ۱۴۰۴ به‌روز شده و شامل نکات جدید مثل امنیت بیشتر و بهینه‌سازی برای سرعت هست.

چرا PHP؟ چون ساده، رایگان و روی بیشتر هاست‌ها در دسترسه. اگر تازه‌کارید، نگران نباشید؛ من همه چیز رو گام‌به‌گام توضیح می‌دم. در نهایت، یه فایل کد آماده رایگان هم براتون می‌ذارم که دانلود کنید و مستقیم استفاده کنید. این API می‌تونه برای مدیریت کاربران، محصولات یا هر داده دیگه‌ای مفید باشه. بیاید شروع کنیم!

گام ۱: آماده‌سازی محیط توسعه برای ساخت API

قبل از اینکه کد بزنیم، باید محیط کارمون رو آماده کنیم. این گام مهمه چون بدون ابزارهای درست، کارمون سخت می‌شه. اول، مطمئن شید که PHP نسخه ۷.۴ یا بالاتر (توصیه می‌کنم ۸.۳ برای ۱۴۰۴) رو نصب دارید. اگر ندارید، از XAMPP یا MAMP استفاده کنید – این‌ها پکیج‌های کاملی هستن که PHP، Apache و MySQL رو با هم می‌دن.

مراحل نصب و راه‌اندازی:

  1. دانلود XAMPP: برید به سایت apachefriends.org و نسخه مناسب سیستم‌عاملتون (ویندوز، مک یا لینوکس) رو دانلود کنید.
  2. نصب و اجرا: بعد از نصب، Apache و MySQL رو استارت کنید. حالا یه فولدر جدید تو htdocs (مثلاً myapi) بسازید.
  3. بررسی PHP: یه فایل info.php بسازید و کد <?php phpinfo(); ?> رو توش بنویسید. تو مرورگر http://localhost/myapi/info.php رو باز کنید تا مطمئن شید PHP کار می‌کنه.

نکته: اگر از Composer استفاده می‌کنید (برای مدیریت پکیج‌ها)، نصبش کنید. تو این آموزش ساده، نیازی به فریمورک مثل Laravel نداریم – همه چیز با PHP خام می‌ره جلو تا یادگیری راحت‌تر باشه. اگر سوالی مثل “چرا XAMPP بهتر از WAMPه؟” دارید، بدونید که XAMPP کراس‌پلتفرمه و برای توسعه محلی عالیه.

گام ۲: ایجاد دیتابیس و جدول برای ذخیره داده‌ها

حالا نوبت دیتابیسه. API بدون داده معنی نداره، پس یه دیتابیس ساده MySQL می‌سازیم. این گام جواب سوال رایج برنامه‌نویس‌ها رو می‌ده: “چطور داده‌ها رو امن ذخیره کنم؟”

راهنمای گام‌به‌گام:

  1. ورود به phpMyAdmin: تو XAMPP، http://localhost/phpmyadmin رو باز کنید. یه دیتابیس جدید بسازید، مثلاً api_db.
  2. ساخت جدول: تو دیتابیس، یه جدول users با فیلدهای زیر بسازید:
    • id (INT, AUTO_INCREMENT, PRIMARY KEY)
    • name (VARCHAR(255))
    • email (VARCHAR(255))
    • created_at (TIMESTAMP, DEFAULT CURRENT_TIMESTAMP)

کد SQL برای ساخت جدول:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
  1. اضافه کردن داده تست: چند رکورد نمونه وارد کنید، مثل:
INSERT INTO users (name, email) VALUES ('علی احمدی', 'ali@example.com');
INSERT INTO users (name, email) VALUES ('سارا کریمی', 'sara@example.com');

این جدول ساده برای مدیریت کاربران مناسبه، اما می‌تونید برای محصولات یا پست‌ها تغییرش بدید. یادتون باشه، همیشه از UTF-8 برای پشتیبانی از زبان پارسی استفاده کنید تا مشکلات کاراکتر پیش نیاد.

گام ۳: نوشتن کد API با PHP برای عملیات CRUD

اینجا قلب تپنده آموزشه! می‌خوایم یه فایل PHP بسازیم که درخواست‌های REST رو مدیریت کنه. REST یعنی استفاده از متدهای HTTP مثل GET (خواندن)، POST (ایجاد)، PUT (به‌روزرسانی) و DELETE (حذف).

کد اصلی API:

فایل api.php رو تو فولدر پروژه بسازید و کد زیر رو توش بذارید. من توضیح خط‌به‌خط می‌دم:

<?php
// تنظیم هدرها برای JSON و CORS (برای دسترسی از دامنه‌های دیگه)
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *'); // برای تست، بعداً محدود کنید
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: Content-Type');

// اتصال به دیتابیس
$host = 'localhost';
$dbname = 'api_db';
$username = 'root'; // پیش‌فرض XAMPP
$password = ''; // پیش‌فرض XAMPP

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo json_encode(['error' => 'اتصال به دیتابیس شکست خورد: ' . $e->getMessage()]);
    exit;
}

// بررسی متد HTTP
$method = $_SERVER['REQUEST_METHOD'];
$request = explode('/', trim($_SERVER['PATH_INFO'], '/'));

// عملیات بر اساس متد
if ($request[0] == 'users') {
    switch ($method) {
        case 'GET':
            // خواندن همه کاربران یا یکی خاص
            if (isset($request[1])) {
                $id = intval($request[1]);
                $stmt = $pdo->prepare('SELECT * FROM users WHERE id = ?');
                $stmt->execute([$id]);
                $user = $stmt->fetch(PDO::FETCH_ASSOC);
                echo json_encode($user ? $user : ['error' => 'کاربر یافت نشد']);
            } else {
                $stmt = $pdo->query('SELECT * FROM users');
                $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
                echo json_encode($users);
            }
            break;

        case 'POST':
            // ایجاد کاربر جدید
            $data = json_decode(file_get_contents('php://input'), true);
            if (isset($data['name']) && isset($data['email'])) {
                $stmt = $pdo->prepare('INSERT INTO users (name, email) VALUES (?, ?)');
                $stmt->execute([$data['name'], $data['email']]);
                echo json_encode(['success' => true, 'id' => $pdo->lastInsertId()]);
            } else {
                echo json_encode(['error' => 'نام و ایمیل الزامی است']);
            }
            break;

        case 'PUT':
            // به‌روزرسانی کاربر
            if (isset($request[1])) {
                $id = intval($request[1]);
                $data = json_decode(file_get_contents('php://input'), true);
                $stmt = $pdo->prepare('UPDATE users SET name = ?, email = ? WHERE id = ?');
                $stmt->execute([$data['name'], $data['email'], $id]);
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['error' => 'ID الزامی است']);
            }
            break;

        case 'DELETE':
            // حذف کاربر
            if (isset($request[1])) {
                $id = intval($request[1]);
                $stmt = $pdo->prepare('DELETE FROM users WHERE id = ?');
                $stmt->execute([$id]);
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['error' => 'ID الزامی است']);
            }
            break;

        default:
            echo json_encode(['error' => 'متد نامعتبر']);
    }
} else {
    echo json_encode(['error' => 'مسیر نامعتبر']);
}
?>

توضیح کد:

  • اول هدرها رو تنظیم می‌کنیم تا خروجی JSON باشه و CORS اجازه دسترسی بده.
  • اتصال به دیتابیس با PDO (امن‌تر از mysql قدیمی).
  • PATH_INFO رو برای تشخیص عملیات (مثل /users/1) استفاده می‌کنیم.
  • برای هر متد، عملیات CRUD رو پیاده کردیم. مثلاً GET همه کاربران رو برمی‌گردونه.

این کد ساده اما قدرتمنده. برای تست محلی، فایل رو تو http://localhost/myapi/api.php/users باز کنید.

گام ۴: تست API با ابزارهای رایگان و رفع خطاها

بعد از نوشتن کد، باید تست کنیم. سوال رایج: “چطور بدون ابزار پیچیده تست کنم؟” جواب: از Postman یا cURL استفاده کنید.

روش‌های تست:

  1. با cURL در ترمینال:
    • GET همه کاربران: curl http://localhost/myapi/api.php/users
    • POST کاربر جدید: curl -X POST -H "Content-Type: application/json" -d '{"name":"مهدی", "email":"mehdi@example.com"}' http://localhost/myapi/api.php/users
  2. با Postman: اپلیکیشن Postman رو دانلود کنید، درخواست جدید بسازید و متدها رو تست کنید. اگر خطایی مثل “اتصال دیتابیس” دیدید، credentials رو چک کنید.
  3. رفع خطاهای رایج:
    • CORS error: هدرها رو چک کنید.
    • JSON invalid: مطمئن شید داده ورودی درست باشه.
    • برای ۱۴۰۴، از HTTPS استفاده کنید تا امن‌تر باشه.

اگر API کار کرد، تبریک! حالا آماده ادغامه.

گام ۵: ادغام API با سایت یا اپ (مثال با وردپرس)

API ساخته شد، حالا چطور استفاده کنیم؟ مثلاً تو یه سایت وردپرسی، کاربران رو از API بکشید.

مثال ادغام با وردپرس:

  1. نصب پلاگین یا کد سفارشی: از wp_remote_get استفاده کنید.
  2. کد نمونه در functions.php:
function fetch_users_from_api() {
    $response = wp_remote_get('http://localhost/myapi/api.php/users');
    if (is_wp_error($response)) {
        return 'خطا در اتصال';
    }
    $body = wp_remote_retrieve_body($response);
    $users = json_decode($body, true);
    return $users;
}
  1. نمایش در صفحه: تو یه صفحه وردپرس، کاربران رو لیست کنید:
$users = fetch_users_from_api();
foreach ($users as $user) {
    echo '<p>' . $user['name'] . ' - ' . $user['email'] . '</p>';
}

این ادغام ساده برای اتصال سایت‌ها عالیه. اگر اپ موبایل دارید، از Retrofit (اندروید) یا Alamofire (iOS) استفاده کنید.

نکات پیشرفته برای ۱۴۰۴:

  • امنیت: از JWT برای احراز هویت استفاده کنید. پکیج firebase/php-jwt رو اضافه کنید.
  • بهینه‌سازی: از caching (مثل Redis) برای سرعت بیشتر.
  • بهترین شیوه‌ها: همیشه نسخه‌بندی کنید (مثل /v1/users) و خطاها رو با کد HTTP برگردونید (مثل 404 برای نه یافتن).

نتیجه‌گیری: دانلود کد رایگان و قدم بعدی

تبریک! حالا شما یه API کامل با PHP ساختید که می‌تونه پایه پروژه‌های بزرگ‌تر باشه. این آموزش جواب بیشتر سوالات مثل “چطور API امن بسازم؟” یا “ادغام با وردپرس چطوره؟” رو داد. برای دانلود فایل ZIP کد آماده (شامل api.php، SQL و README)، – رایگان و با لایسنس MIT.
دانلود رایگان فایل در محصولات مرتبط درج شده است 

اگر سوالی دارید، تو کامنت‌ها بپرسید. اگر می‌خواید API سفارشی یا خدمات توسعه وب، با تیم IDAPI تماس بگیرید. موفق باشید و کد بزنید! 

گفتگوی زنده