REST API PHP

Ir speciālas pieejas, kas standartizē API gan izstrādātāju, gan lietotāju ērtībām.

Viena no šādām pieejām ir REST API. Tās pamatā ir ideja, ka CRUD operācijām jāizmanto dažādi HTTP protokola metodi.

Datu iegūšanai - GET metode, datu izveidošanai - POST metode, datu maiņai - PUT metode, datu dzēšanai - DELETE metode.

Piemēram, apskatīsim kādu API, kas strādā ar lietotājiem. Apskatīsim, kā izskatīsies URL dažādām darbībām.

Iegūstam visus lietotājus:

urlGET http://api.loc/users/

Iegūstam vienu lietotāju pēc viņa id:

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

Izveidojam lietotāju:

urlPOST http://api.loc/user/

Mainām lietotāju pēc viņa id:

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

Dzēšam lietotāju pēc viņa id:

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

Apskatīsim, kā REST API tiek ievietots PHP. Šeit ir zināma problēma. Fakts ir tāds, ka gan PHP, gan CURL atbalsta tikai GET un POST metodes:

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

Tāpēc, lai ieviestu REST API, būs jāizmanto viltība. Tās būtība ir tāda, ka patiesībā dati tiks pārsūtīti tikai ar GET un POST metodēm, bet mēs imitēsim citu metožu darbību izmantojot pielāgotu HTTP galveni. Nosauksim to, piemēram, par HTTP-X-HTTP-METHOD.

Tad mēs varēsim iegūt šīs galvenes saturu šādi:

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

Tagad mēs varam uzrakstīt API ieviešanu:

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

Ieviesiet interneta veikala preču REST API.

Задание 2

Pārbaudiet ieviestā API darbību izmantojot CURL bibliotēku.