REST API в PHP
Существуют специальные подходы, стандартизирующие API для общего удобства как разработчиков API, так и его пользователей.
Одним из таких подходов является REST API. В его основе лежит идея, что для CRUD операций необходимо использовать различные методы протокола HTTP.
Для получения данных - метод GET, для создания данных - метод POST, для изменения данных - метод PUT, для удаления данных - метод DELETE.
Для примера давайте рассмотрим некое API, манипулирующее юзерами. Давайте посмотрим, как будут выглядеть URL для различных действий.
Получаем всех юзеров:
GET http://api.loc/users/
Получаем одного юзера по его id
:
GET http://api.loc/user/1/
Создаем юзера:
POST http://api.loc/user/
Изменяем юзера по его id
:
PUT http://api.loc/user/1/
Удаляем юзера по его id
:
DELETE http://api.loc/user/1/
Давайте посмотрим, как REST API реализуется в PHP. Тут есть некоторая проблема. Дело в том, что и PHP, и CURL поддерживают только методы GET и POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // только GET и POST
?>
Поэтому для реализации REST API придется
идти на хитрость. Ее суть заключается в том,
что в реальности данные будут передаваться
только методами GET и POST, но мы будем
имитировать работу других методов
с помощью кастомного HTTP заголовка.
Назовем его, например, HTTP-X-HTTP-METHOD
.
Тогда мы сможем получить содержимое этого заголовка следующим образом:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Теперь мы можем написать реализацию API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Реализуйте REST API товаров интернет магазина.
Проверьте работу реализованного API с помощью библиотеки CURL.