REST API v PHP
Existují speciální přístupy, které standardizují API pro společné pohodlí jak vývojářů API, tak jeho uživatelů.
Jedním z takových přístupů je REST API. Jeho základem je myšlenka, že pro CRUD operace je nutné používat různé metody protokolu HTTP.
Pro získání dat - metoda GET, pro vytvoření dat - metoda POST, pro změnu dat - metoda PUT, pro smazání dat - metoda DELETE.
Jako příklad uvažujme nějaké API, které manipuluje s uživateli. Podívejme se, jak budou URL pro různé akce vypadat.
Získáme všechny uživatele:
GET http://api.loc/users/
Získáme jednoho uživatele podle jeho id:
GET http://api.loc/user/1/
Vytvoříme uživatele:
POST http://api.loc/user/
Změníme uživatele podle jeho id:
PUT http://api.loc/user/1/
Smažeme uživatele podle jeho id:
DELETE http://api.loc/user/1/
Podívejme se, jak se REST API implementuje v PHP. Je zde určitý problém. Faktem je, že jak PHP, tak CURL podporují pouze metody GET a POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // pouze GET a POST
?>
Proto pro implementaci REST API budeme muset
použít trik. Podstata spočívá v tom,
že ve skutečnosti budou data přenášena
pouze metodami GET a POST, ale my budeme
napodobovat práci jiných metod
pomocí vlastní HTTP hlavičky.
Pojmenujeme ji například HTTP-X-HTTP-METHOD.
Pak budeme moci získat obsah této hlavičky následujícím způsobem:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Nyní můžeme napsat implementaci API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementujte REST API pro produkty internetového obchodu.
Otestujte funkčnost implementovaného API pomocí knihovny CURL.