REST API v PHP

Obstajajo posebni pristopi, ki standardizirajo API za skupno udobje tako razvijalcev API-ja kot tudi njegovih uporabnikov.

Eden takih pristopov je REST API. Temelji na ideji, da je za CRUD operacije potrebno uporabljati različne metode protokola HTTP.

Za pridobivanje podatkov - metoda GET, za ustvarjanje podatkov - metoda POST, za spreminjanje podatkov - metoda PUT, za brisanje podatkov - metoda DELETE.

Za primer razmislimo o nekem API-ju, ki upravlja z uporabniki. Poglejmo, kako bodo izgledali URL-ji za različna dejanja.

Pridobimo vse uporabnike:

urlGET http://api.loc/users/

Pridobimo enega uporabnika po njegovem id:

urlGET http://api.loc/user/1/

Ustvarimo uporabnika:

urlPOST http://api.loc/user/

Spremenimo uporabnika po njegovem id:

urlPUT http://api.loc/user/1/

Izbrišemo uporabnika po njegovem id:

urlDELETE http://api.loc/user/1/

Poglejmo, kako se REST API implementira v PHP. Tu je neka težava. Dejstvo je, da tako PHP kot CURL podpirata samo metodi GET in POST:

api.loc/index.php<?php
  $method = $_SERVER['REQUEST_METHOD'];
  var_dump($method); // samo GET in POST
?>

Zato bomo morali za implementacijo REST API-ja uporabiti trik. Bistvo je v tem, da se bodo podatki v resnici prenašali le z metodama GET in POST, vendar bomo posnemali delovanje drugih metod s pomočjo posebne HTTP glave. Poimenujmo jo, na primer, HTTP-X-HTTP-METHOD.

Takrat bomo lahko vsebino te glave dobili na naslednji način:

api.loc/index.php<?php
  $method = $_SERVER['HTTP-X-HTTP-METHOD'];
?>

Zdaj lahko napišemo implementacijo API-ja:

api.loc/index.php<?php
  $method = $_SERVER['HTTP-X-HTTP-METHOD'];
  
  switch ($method)  {
    case 'GET':
      // ...
    break;
    case 'POST':
      // ...
    break;
    case 'PUT':
      // ...
    break;
    case 'DELETE':
      // ...
    break;
  }
?>
Задание 1

Implementirajte REST API za izdelke spletne trgovine.

Задание 2

Preverite delovanje implementiranega API-ja s pomočjo knjižnice CURL.