REST API v PHP
Existujú špeciálne prístupy, ktoré štandardizujú API pre všeobecné pohodlie ako pre vývojárov API, tak pre jeho používateľov.
Jedným z takýchto prístupov je REST API. Jeho základom je myšlienka, že pre CRUD operácie je potrebné používať rôzne metódy protokolu HTTP.
Pre získanie údajov - metóda GET, pre vytvorenie údajov - metóda POST, pre zmenu údajov - metóda PUT, pre vymazanie údajov - metóda DELETE.
Pre príklad si pozrime nejaké API, ktoré manipuluje s používateľmi. Pozrime sa, ako budú vyzerať URL pre rôzne akcie.
Získame všetkých používateľov:
GET http://api.loc/users/
Získame jedného používateľa podľa jeho id:
GET http://api.loc/user/1/
Vytvoríme používateľa:
POST http://api.loc/user/
Zmeníme používateľa podľa jeho id:
PUT http://api.loc/user/1/
Vymažeme používateľa podľa jeho id:
DELETE http://api.loc/user/1/
Pozrime sa, ako sa REST API implementuje v PHP. Je tu istý problém. Vec sa má tak, že aj PHP, aj CURL podporujú iba metódy GET a POST:
<?php
$method = $_SERVER['REQUEST_METHOD'];
var_dump($method); // len GET a POST
?>
Preto na implementáciu REST API budeme musieť
pristúpiť k triku. Jeho podstata spočíva v tom,
že v skutočnosti sa údaje budú prenášať
len metódami GET a POST, ale my budeme
imitovať prácu iných metód
pomocou vlastnej HTTP hlavičky.
Pomenujeme ju, napríklad, HTTP-X-HTTP-METHOD.
Potom budeme môcť získať obsah tejto hlavičky nasledovným spôsobom:
<?php
$method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>
Teraz môžeme napísať implementáciu 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 pre tovar internetového obchodu.
Otestujte činnosť implementovaného API pomocou knižnice CURL.