⚙️ Tạo RESTful API bằng PHP Thuần: Giao tiếp linh hoạt, dễ tích hợp

Trong thế giới hiện đại, nơi mà ứng dụng web, mobile và hệ thống phân tán cần giao tiếp với nhau mọi lúc, mọi nơi – RESTful API chính là chiếc cầu nối vững chắc. Dù có nhiều framework hiện đại, việc tạo API bằng PHP thuần vẫn là một kỹ năng quan trọng và tinh gọn, đặc biệt khi bạn cần kiểm soát chi tiết và tối ưu tài nguyên hệ thống.

🔄 REST là gì và vì sao nên dùng?

REST (Representational State Transfer) là một chuẩn kiến trúc cho phép xây dựng các API nhẹ, dễ mở rộng và dễ tích hợp. Trong REST:

  • Mỗi tài nguyên (ví dụ: người dùng, bài viết) có một đường dẫn duy nhất
  • Các hành động như GET, POST, PUT, DELETE đại diện cho các thao tác tương ứng
  • Dữ liệu thường được truyền dưới dạng JSON

RESTful API là nền tảng để frontend (React, Vue), mobile app (iOS, Android), hoặc bên thứ ba có thể tương tác với hệ thống PHP của bạn mà không cần giao diện.

🔌 Cấu trúc đơn giản cho API PHP

Ví dụ đơn giản: một API quản lý danh sách sản phẩm.

$request_method = $_SERVER["REQUEST_METHOD"];

switch($request_method) {
    case 'GET':
        // Lấy danh sách sản phẩm hoặc sản phẩm cụ thể
        break;
    case 'POST':
        // Tạo sản phẩm mới
        break;
    case 'PUT':
        // Cập nhật sản phẩm
        break;
    case 'DELETE':
        // Xóa sản phẩm
        break;
    default:
        http_response_code(405);
        echo json_encode(["message" => "Phương thức không được hỗ trợ"]);
}

Bạn có thể trích ID từ URL bằng cách sử dụng .htaccess hoặc $_GET['id'], và đọc dữ liệu JSON từ thân yêu cầu:

$data = json_decode(file_get_contents("php://input"), true);

🗃️ Phản hồi định dạng JSON

API cần trả dữ liệu ở định dạng dễ xử lý. PHP có thể xuất JSON dễ dàng:

header("Content-Type: application/json");
echo json_encode([
    "status" => "success",
    "data" => $sanpham
]);

Bạn cũng nên thiết lập mã trạng thái HTTP tương ứng:

http_response_code(200); // OK
http_response_code(201); // Created
http_response_code(404); // Not Found
http_response_code(500); // Server Error

🛡️ Bảo mật cơ bản cho API

Dù đơn giản, API cũng cần được bảo vệ:

  • Token xác thực (API Key hoặc JWT) để hạn chế truy cập
  • Giới hạn IP truy cập nếu cần
  • Chống brute-force bằng giới hạn tốc độ (rate limiting)
  • Kiểm tra Content-Type đầu vào, tránh lỗi hoặc tấn công

Ví dụ xác thực đơn giản:

$headers = getallheaders();
if ($headers['Authorization'] !== 'Bearer your-secret-token') {
    http_response_code(401);
    echo json_encode(["message" => "Không có quyền truy cập"]);
    exit;
}

🧪 Kiểm thử API với Postman

Trước khi đưa API vào sử dụng thực tế, bạn nên kiểm thử với các công cụ như:

  • Postman: dễ dùng, có thể lưu bộ API, test tự động
  • Curl: dòng lệnh đơn giản để gửi yêu cầu API
  • Insomnia: công cụ thay thế Postman, nhiều tính năng nâng cao

Ví dụ dùng curl:

curl -X POST http://yourdomain.com/api/products \
     -H "Content-Type: application/json" \
     -d '{"name":"Bút bi","price":10000}'

🧩 Mở rộng: Kết hợp với Frontend & App

Sau khi có RESTful API hoạt động, bạn có thể tích hợp với:

  • React / Vue / Angular: fetch dữ liệu và hiển thị động
  • Mobile app Flutter hoặc React Native
  • Các hệ thống quản lý như ERP, LMS, CRM…

API chính là “trái tim” để mọi hệ thống có thể phối hợp hiệu quả và thống nhất dữ liệu.

🧠 Kết luận

Dù có nhiều framework hiện đại như Laravel, Symfony, việc nắm vững cách tạo RESTful API bằng PHP thuần vẫn mang lại cái nhìn sâu sắc và giúp bạn tối ưu hóa hiệu suất trong các dự án nhỏ hoặc cần sự kiểm soát chặt chẽ. Đây là bước đầu không thể thiếu nếu bạn muốn xây dựng hệ thống mở, dễ tích hợp và mở rộng trong tương lai.