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.



Чат с GPT Компилятор