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.