REST API PHP-ban

Léteznek speciális megközelítések, amelyek szabványosítják az API-t a fejlesztők és az API felhasználói általános kényelme érdekében.

Az egyik ilyen megközelítés a REST API. Alapötlete az, hogy a CRUD műveletekhez különböző HTTP protokoll módszereket kell használni.

Adatok lekéréséhez - GET módszer, adatok létrehozásához - POST módszer, adatok módosításához - PUT módszer, adatok törléséhez - DELETE módszer.

Példaként vegyünk egy API-t, amely felhasználókkal manipulál. Nézzük meg, hogyan fognak kinézni a URL-ek a különböző műveletekhez.

Összes felhasználó lekérése:

urlGET http://api.loc/users/

Egy felhasználó lekérése a id alapján:

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

Felhasználó létrehozása:

urlPOST http://api.loc/user/

Felhasználó módosítása a id alapján:

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

Felhasználó törlése a id alapján:

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

Nézzük meg, hogyan valósul meg a REST API PHP-ban. Itt van egy bizonyos probléma. Az a helyzet, hogy mind a PHP, mind a CURL csak a GET és POST módszereket támogatja:

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

Ezért a REST API megvalósításához trükköznünk kell. A trükk lényege az, hogy a valóságban az adatokat csak GET és POST módszerekkel továbbítjuk, de más módszerek működését fogjuk utánozni egy egyéni HTTP fejléc segítségével. Nevezzük el például HTTP-X-HTTP-METHOD-nak.

Így a fejléc tartalmát a következőképpen tudjuk megkapni:

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

Most már megírhatjuk az API megvalósítását:

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

Valósítsa meg egy internetes bolt termékeinek REST API-ját.

Задание 2

Ellenőrizze a megvalósított API működését a CURL könyvtár segítségével.