REST API në PHP

Ekzistojnë qasje të veçanta, që standardizojnë API për lehtësi të përgjithshme si për zhvilluesit e API, ashtu edhe për përdoruesit e tij.

Një nga këto qasje është REST API. Në themel të saj qëndron ideja, që për operacionet CRUD është e nevojshme të përdoren metoda të ndryshme të protokollit HTTP.

Për marrjen e të dhënave - metoda GET, për krijimin e të dhënave - metoda POST, për ndryshimin e të dhënave - metoda PUT, për fshirjen e të dhënave - metoda DELETE.

Për shembull, le të shqyrtojmë një API të caktuar, që manipulon përdorues. Le të shohim, si do të duken URL për veprime të ndryshme.

Marrim të gjithë përdoruesit:

urlGET http://api.loc/users/

Marrim një përdorues sipas id të tij:

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

Krijojmë përdorues:

urlPOST http://api.loc/user/

Ndryshojmë përdorues sipas id të tij:

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

Fshijmë përdorues sipas id të tij:

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

Le të shohim se si REST API implementohet në PHP. Këtu ka një problem të caktuar. Çështja është se si PHP, ashtu edhe CURL mbështesin vetëm metodat GET dhe POST:

api.loc/index.php<?php
  $method = $_SERVER['REQUEST_METHOD'];
  var_dump($method); // vetëm GET dhe POST
?>

Prandaj, për të implementuar REST API do të duhet të përdorim një truk. Thelbi i tij qëndron në faktin që në realitet të dhënat do të transmetohen vetëm me metodat GET dhe POST, por ne do të imitojmë punën e metodave të tjera me ndihmën e një kokë HTTP të personalizuar. Le ta quajmë atë, për shembull, HTTP-X-HTTP-METHOD.

Atëherë ne do të mund të marrim përmbajtjen e kësaj koke si më poshtë:

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

Tani ne mund të shkruajmë implementimin e API:

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

Implementoni REST API për produktet e një dyqani online.

Задание 2

Testoni funksionimin e API-së së implementuar me ndihmën e bibliotekës CURL.