ساخت REST API با PHP: راهنمای جامع
در دنیای مدرن توسعه وب، APIها نقش حیاتی در ارتباط بین سیستمهای مختلف ایفا میکنند. REST (Representational State Transfer) به عنوان یک سبک معماری محبوب برای طراحی APIها شناخته میشود. این مقاله به بررسی جامع نحوه ساخت REST API با استفاده از زبان PHP میپردازد. ما از مفاهیم پایه تا پیادهسازی عملی، تمام جنبههای مورد نیاز را پوشش خواهیم داد.
مقدمهای بر REST API
REST یک سبک معماری است که بر پایه اصول زیر بنا شده است:
- Client-Server: جداسازی واضح بین رابط کاربری (Client) و منطق داده (Server).
- Stateless: هر درخواست از Client به Server باید تمام اطلاعات لازم برای پردازش را شامل شود. Server هیچ اطلاعاتی از Client در بین درخواستها ذخیره نمیکند.
- Cacheable: پاسخهای Server باید به گونهای طراحی شوند که Client بتواند آنها را کش کند و از درخواستهای مکرر جلوگیری کند.
- Layered System: معماری لایهای به Server اجازه میدهد تا پیچیدگی را پنهان کند و قابلیت مقیاسپذیری را افزایش دهد.
- Uniform Interface: یک رابط یکنواخت بین Client و Server وجود دارد که شامل استفاده از متدهای HTTP استاندارد (GET, POST, PUT, DELETE) و فرمتهای داده استاندارد (JSON, XML) است.
REST APIها معمولاً از متدهای HTTP زیر استفاده میکنند:
- GET: برای دریافت اطلاعات.
- POST: برای ایجاد اطلاعات جدید.
- PUT: برای بهروزرسانی اطلاعات موجود (جایگزینی کامل).
- PATCH: برای بهروزرسانی جزئی اطلاعات موجود.
- DELETE: برای حذف اطلاعات.
پیشنیازها
برای دنبال کردن این آموزش، به موارد زیر نیاز دارید:
- یک محیط توسعه PHP (مانند XAMPP، WAMP یا LAMP).
- یک ویرایشگر کد (مانند VS Code، Sublime Text یا PHPStorm).
- آشنایی با مفاهیم پایه PHP (متغیرها، توابع، آرایهها، و غیره).
- آشنایی با مفاهیم پایگاه داده (مانند MySQL یا PostgreSQL).
راهاندازی پروژه
ابتدا یک پوشه برای پروژه خود ایجاد کنید. سپس یک فایل PHP (مثلاً api.php) در این پوشه ایجاد کنید. این فایل نقطه ورود API شما خواهد بود.
اتصال به پایگاه داده
برای مثال، فرض کنید میخواهیم یک API برای مدیریت کاربران ایجاد کنیم. ابتدا باید به پایگاه داده متصل شویم. در اینجا از MySQL استفاده میکنیم:
connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
توجه: مقادیر $servername، $username، $password و $dbname را با اطلاعات پایگاه داده خود جایگزین کنید.
پیادهسازی Endpointها
اکنون میتوانیم Endpointهای REST API خود را پیادهسازی کنیم. Endpointها URLهایی هستند که Client برای دسترسی به منابع Server از آنها استفاده میکند.
دریافت لیست کاربران (GET /users)
query($sql);
$users = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$users[] = $row;
}
}
header('Content-Type: application/json');
echo json_encode($users);
exit;
}
?>
دریافت یک کاربر خاص (GET /users/{id})
3 && $parts[2] == "users" && is_numeric($parts[3])) {
$userId = $parts[3];
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$sql = "SELECT * FROM users WHERE id = " . $userId;
$result = $conn->query($sql);
if ($result->num_rows == 1) {
$user = $result->fetch_assoc();
header('Content-Type: application/json');
echo json_encode($user);
exit;
} else {
http_response_code(404);
echo json_encode(array("message" => "User not found"));
exit;
}
}
}
?>
ایجاد کاربر جدید (POST /users)
query($sql) === TRUE) {
http_response_code(201); // Created
echo json_encode(array("message" => "User created successfully"));
exit;
} else {
http_response_code(500); // Internal Server Error
echo json_encode(array("message" => "Error creating user"));
exit;
}
} else {
http_response_code(400); // Bad Request
echo json_encode(array("message" => "Missing required parameters"));
exit;
}
}
?>
بهروزرسانی کاربر (PUT /users/{id})
3 && $parts[2] == "users" && is_numeric($parts[3])) {
$userId = $parts[3];
if ($_SERVER["REQUEST_METHOD"] == "PUT") {
$data = json_decode(file_get_contents("php://input"), true);
if (isset($data["name"]) && isset($data["email"])) {
$name = $data["name"];
$email = $data["email"];
$sql = "UPDATE users SET name = '$name', email = '$email' WHERE id = " . $userId;
if ($conn->query($sql) === TRUE) {
http_response_code(200); // OK
echo json_encode(array("message" => "User updated successfully"));
exit;
} else {
http_response_code(500); // Internal Server Error
echo json_encode(array("message" => "Error updating user"));
exit;
}
} else {
http_response_code(400); // Bad Request
echo json_encode(array("message" => "Missing required parameters"));
exit;
}
}
}
?>
حذف کاربر (DELETE /users/{id})
3 && $parts[2] == "users" && is_numeric($parts[3])) {
$userId = $parts[3];
if ($_SERVER["REQUEST_METHOD"] == "DELETE") {
$sql = "DELETE FROM users WHERE id = " . $userId;
if ($conn->query($sql) === TRUE) {
http_response_code(200); // OK
echo json_encode(array("message" => "User deleted successfully"));
exit;
} else {
http_response_code(500); // Internal Server Error
echo json_encode(array("message" => "Error deleting user"));
exit;
}
}
}
?>
نکات مهم
- اعتبارسنجی دادهها: همیشه دادههای ورودی را اعتبارسنجی کنید تا از حملات امنیتی جلوگیری کنید.
- مدیریت خطا: خطاها را به درستی مدیریت کنید و پیامهای خطای مناسب را به Client برگردانید.
- امنیت: API خود را با استفاده از روشهای امنیتی مناسب (مانند احراز هویت و مجوز) محافظت کنید.
- مستندسازی: API خود را به طور کامل مستند کنید تا توسعهدهندگان دیگر بتوانند به راحتی از آن استفاده کنند.
- استفاده از فریمورکها: برای پروژههای بزرگتر، استفاده از فریمورکهای PHP (مانند Laravel یا Symfony) میتواند به شما کمک کند تا API خود را به طور موثرتری توسعه دهید.
نتیجهگیری
ساخت REST API با PHP یک فرآیند نسبتاً ساده است. با استفاده از اصول REST و متدهای HTTP استاندارد، میتوانید APIهای قدرتمند و انعطافپذیری ایجاد کنید که به شما امکان میدهند سیستمهای مختلف را به یکدیگر متصل کنید. این مقاله یک راهنمای جامع برای شروع کار با REST API در PHP ارائه میدهد. با تمرین و تجربه، میتوانید مهارتهای خود را در این زمینه بهبود بخشید و APIهای پیچیدهتری را توسعه دهید.
