REST API w PHP
Istnieją specjalne podejścia, standaryzujące API dla wspólnej wygody zarówno deweloperów API, jak i jego użytkowników.
Jednym z takich podejść jest REST API. Jego podstawą jest idea, że dla operacji CRUD należy używać różnych metod protokołu HTTP.
Dla pobierania danych - metoda GET, dla tworzenia danych - metoda POST, dla zmiany danych - metoda PUT, dla usuwania danych - metoda DELETE.
Dla przykładu rozważmy pewne API, manipulujące użytkownikami. Spójrzmy, jak będą wyglądać URL dla różnych akcji.
Pobieramy wszystkich użytkowników:
GET http://api.loc/users/
Pobieramy jednego użytkownika po jego id:
GET http://api.loc/user/1/
Tworzymy użytkownika:
POST http://api.loc/user/
Zmieniamy użytkownika po jego id:
PUT http://api.loc/user/1/
Usuwamy użytkownika po jego id:
DELETE http://api.loc/user/1/
Spójrzmy, jak REST API jest implementowane w PHP. Jest tu pewien problem. Chodzi o to, że zarówno PHP, jak i CURL obsługują tylko metody GET i POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // tylko GET i POST
?>
Dlatego do implementacji REST API trzeba
będzie pójść na sztuczkę. Jej istota polega na tym,
że w rzeczywistości dane będą przesyłane
tylko metodami GET i POST, ale my będziemy
symulować działanie innych metod
za pomocą niestandardowego nagłówka HTTP.
Nazwijmy go, na przykład, HTTP-X-HTTP-METHOD.
Wtedy będziemy mogli pobrać zawartość tego nagłówka w następujący sposób:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Teraz możemy napisać implementację API:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Zaimplementuj REST API produktów sklepu internetowego.
Sprawdź działanie zaimplementowanego API za pomocą biblioteki CURL.