REST API în PHP
Există abordări speciale, care standardizează API-ul pentru comoditatea generală atât a dezvoltatorilor API, cât și a utilizatorilor săi.
Una dintre aceste abordări este REST API. La baza sa stă ideea că pentru operațiile CRUD este necesar să se utilizeze diferite metode ale protocolului HTTP.
Pentru obținerea datelor - metoda GET, pentru crearea datelor - metoda POST, pentru modificarea datelor - metoda PUT, pentru ștergerea datelor - metoda DELETE.
De exemplu, să luăm în considerare un API care manipulează utilizatori. Să vedem cum vor arăta URL-urile pentru diferite acțiuni.
Obținem toți utilizatorii:
GET http://api.loc/users/
Obținem un utilizator după id-ul său:
GET http://api.loc/user/1/
Creăm un utilizator:
POST http://api.loc/user/
Modificăm utilizatorul după id-ul său:
PUT http://api.loc/user/1/
Ștergem utilizatorul după id-ul său:
DELETE http://api.loc/user/1/
Să vedem cum este implementat REST API în PHP. Aici există o anumită problemă. Cert este că atât PHP, cât și CURL suportă doar metodele GET și POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // doar GET și POST
?>
Prin urmare, pentru a implementa REST API va trebui
să recurgem la un truc. Esența lui constă în faptul
că în realitate datele vor fi transmise
doar prin metodele GET și POST, dar noi vom
simula funcționarea altor metode
cu ajutorul unui antet HTTP personalizat.
Să-l numim, de exemplu, HTTP-X-HTTP-METHOD.
Atunci vom putea obține conținutul acestui antet în felul următor:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Acum putem scrie implementarea API-ului:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
switch ($method) {
case 'GET':
// ...
break;
case 'POST':
// ...
break;
case 'PUT':
// ...
break;
case 'DELETE':
// ...
break;
}
?>
Implementați un REST API pentru produsele unui magazin online.
Testați funcționarea API-ului implementat cu ajutorul bibliotecii CURL.