ถ้าคุณเป็นนักพัฒนา PHP แล้วเคยต้องสร้าง API เพื่อให้ระบบอื่น ๆ มาเรียกใช้ แต่ยังงง ๆ ว่า "ต้องทำยังไงให้ API ใช้งานง่าย ปลอดภัย และเป็นมาตรฐาน?" 🤔
บทความนี้จะพาคุณไปทำความเข้าใจ RESTful API และวิธีสร้างมันขึ้นมาด้วย PHP แบบมือโปร 💡
พร้อมตัวอย่างโค้ดจริง (มี CRUD: Create, Read, Update, Delete) ที่สามารถใช้งานได้ทันที!
1. RESTful API คืออะไร? แล้วทำไมต้องใช้มัน? 🤷♂️
✅ RESTful API คืออะไร?
RESTful API เป็น API ที่ออกแบบตามหลัก REST (Representational State Transfer)
REST ช่วยให้ API ทำงานได้อย่างเป็นมาตรฐาน โดยใช้ HTTP Method ในการควบคุมข้อมูล เช่น:
HTTP Method | ใช้ทำอะไร? | ตัวอย่าง |
---|---|---|
GET | ดึงข้อมูล | /users (ดึงข้อมูลผู้ใช้ทั้งหมด) |
POST | เพิ่มข้อมูล | /users (เพิ่มผู้ใช้ใหม่) |
PUT | อัปเดตข้อมูล | /users/1 (แก้ไขข้อมูลผู้ใช้ ID=1) |
DELETE | ลบข้อมูล | /users/1 (ลบผู้ใช้ ID=1) |
✅ RESTful API มีประโยชน์ยังไง?
✔ รองรับหลายแพลตฟอร์ม (Frontend, Mobile, IoT)
✔ โค้ดสะอาดและเข้าใจง่าย (ใช้ HTTP Method ตามมาตรฐาน)
✔ สเกลได้ง่าย (รองรับปริมาณผู้ใช้เยอะ ๆ ได้)
2. เตรียมตัวก่อนเริ่มสร้าง RESTful API ด้วย PHP 🛠️
📌 สิ่งที่ต้องมี
✅ PHP 7 หรือใหม่กว่า
✅ MySQL หรือ Database ที่รองรับ
✅ Composer (ใช้สำหรับติดตั้งไลบรารี)
📌 ติดตั้ง Composer และ Slim Framework
เราจะใช้ Slim Framework ช่วยจัดการ API ให้ง่ายขึ้น
composer require slim/slim:^4.0 slim/psr7
📌 Slim คืออะไร?
Slim เป็น Micro Framework สำหรับ PHP ที่ช่วยให้สร้าง RESTful API ได้เร็วและง่ายกว่าเขียนเองตั้งแต่ต้น
3. เริ่มสร้าง RESTful API ด้วย PHP
3.1 สร้างโครงสร้างโปรเจกต์
จัดโครงสร้างไฟล์ให้เป็นระเบียบแบบนี้
restful-api-php/
│── public/
│ ├── index.php (ไฟล์หลักของ API)
│── src/
│ ├── Database.php (จัดการฐานข้อมูล)
│ ├── UserController.php (ควบคุม API ผู้ใช้)
│── composer.json
3.2 เชื่อมต่อฐานข้อมูล (Database.php)
สร้างไฟล์ src/Database.php สำหรับจัดการการเชื่อมต่อ MySQL
<?php
class Database {
private $host = "localhost";
private $db_name = "restful_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 $exception) {
echo "Database error: " . $exception->getMessage();
}
return $this->conn;
}
}
?>
3.3 สร้าง API สำหรับจัดการผู้ใช้ (UserController.php)
สร้างไฟล์ src/UserController.php และเพิ่มโค้ดนี้
<?php
require_once "Database.php";
class UserController {
private $db;
public function __construct() {
$database = new Database();
$this->db = $database->getConnection();
}
// ดึงข้อมูลผู้ใช้ทั้งหมด
public function getUsers($response) {
$query = "SELECT * FROM users";
$stmt = $this->db->prepare($query);
$stmt->execute();
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $response->withJson($users);
}
// เพิ่มผู้ใช้ใหม่
public function createUser($request, $response) {
$data = $request->getParsedBody();
$query = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $this->db->prepare($query);
$stmt->bindParam(":name", $data['name']);
$stmt->bindParam(":email", $data['email']);
$stmt->execute();
return $response->withJson(["message" => "User created successfully"]);
}
}
?>
3.4 ตั้งค่า Route ใน index.php
สร้างไฟล์ public/index.php และตั้งค่า API Route
<?php
require '../vendor/autoload.php';
require '../src/UserController.php';
$app = new \Slim\App();
// สร้าง instance ของ UserController
$userController = new UserController();
// Route: GET /users (ดึงข้อมูลผู้ใช้ทั้งหมด)
$app->get('/users', function ($request, $response, $args) use ($userController) {
return $userController->getUsers($response);
});
// Route: POST /users (เพิ่มผู้ใช้ใหม่)
$app->post('/users', function ($request, $response, $args) use ($userController) {
return $userController->createUser($request, $response);
});
// เริ่มต้น API
$app->run();
?>
📌 วิธีทดสอบ API
1️⃣ รันเซิร์ฟเวอร์ด้วย PHP
php -S localhost:8000 -t public
2️⃣ ทดสอบดึงข้อมูลผู้ใช้
เปิดเว็บเบราว์เซอร์แล้วไปที่ http://localhost:8000/users
3️⃣ ทดสอบเพิ่มผู้ใช้ใหม่
ใช้ Postman หรือ cURL ส่ง POST ไปที่ /users พร้อม JSON:
{
"name": "John Doe",
"email": "john@example.com"
}
4. จัดการข้อผิดพลาดใน API (Error Handling)
เราควรให้ API ตอบกลับข้อความที่ชัดเจน เมื่อเกิดข้อผิดพลาด
// กรณีหา Resource ไม่เจอ
$app->get('/users/{id}', function ($request, $response, $args) use ($userController) {
$user = $userController->getUserById($args['id']);
if (!$user) {
return $response->withJson(["error" => "User not found"], 404);
}
return $response->withJson($user);
});
5. สรุป: RESTful API ด้วย PHP แบบมือโปร
🔥 สิ่งที่คุณได้เรียนรู้
✅ RESTful API คืออะไร และใช้ HTTP Method ยังไง
✅ วิธีสร้าง API ด้วย PHP + Slim Framework
✅ วิธีเชื่อมต่อฐานข้อมูลและจัดการข้อมูลด้วย CRUD
✅ วิธีทำ Error Handling ให้ API ใช้งานง่าย
💡 API เป็นหัวใจสำคัญของเว็บยุคใหม่ ถ้าอยากพัฒนา PHP แบบมือโปร ต้องเข้าใจ RESTful API! 🚀