REST API trong PHP
Tồn tại những cách tiếp cận đặc biệt, chuẩn hóa API để thuận tiện chung cho cả nhà phát triển API lẫn người sử dụng nó.
Một trong những cách tiếp cận như vậy là REST API. Cốt lõi của nó là ý tưởng rằng đối với các thao tác CRUD cần sử dụng các phương thức khác nhau của giao thức HTTP.
Để lấy dữ liệu - phương thức GET, để tạo dữ liệu - phương thức POST, để thay đổi dữ liệu - phương thức PUT, để xóa dữ liệu - phương thức DELETE.
Để ví dụ, hãy xem xét một API nào đó, thao tác với người dùng. Hãy xem, các URL cho các hành động khác nhau sẽ trông như thế nào.
Lấy tất cả người dùng:
GET http://api.loc/users/
Lấy một người dùng theo id của họ:
GET http://api.loc/user/1/
Tạo người dùng:
POST http://api.loc/user/
Thay đổi người dùng theo id của họ:
PUT http://api.loc/user/1/
Xóa người dùng theo id của họ:
DELETE http://api.loc/user/1/
Hãy xem cách REST API được triển khai trong PHP. Ở đây có một vấn đề nhất định. Vấn đề là cả PHP lẫn CURL chỉ hỗ trợ các phương thức GET và POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // chỉ GET và POST
?>
Vì vậy để triển khai REST API sẽ phải
dùng đến mẹo. Bản chất của nó là,
trong thực tế dữ liệu sẽ được truyền
chỉ bằng các phương thức GET và POST, nhưng chúng ta sẽ
mô phỏng hoạt động của các phương thức khác
bằng cách sử dụng một tiêu đề HTTP tùy chỉnh.
Hãy đặt tên cho nó, ví dụ, HTTP-X-HTTP-METHOD.
Khi đó chúng ta có thể lấy nội dung của tiêu đề này như sau:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Bây giờ chúng ta có thể viết phần triển khai API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Hãy triển khai REST API cho sản phẩm của cửa hàng trực tuyến.
Hãy kiểm tra hoạt động của API đã triển khai bằng thư viện CURL.