REST API in PHP

Er zijn speciale benaderingen die API standaardiseren voor het algemene gemak van zowel API-ontwikkelaars als zijn gebruikers.

Een van dergelijke benaderingen is REST API. De basisidee is dat voor CRUD-bewerkingen verschillende methoden van het HTTP-protocol moeten worden gebruikt.

Voor het ophalen van gegevens - de GET-methode, voor het aanmaken van gegevens - de POST-methode, voor het wijzigen van gegevens - de PUT-methode, voor het verwijderen van gegevens - de DELETE-methode.

Laten we als voorbeeld een API bekijken die gebruikers beheert. Laten we kijken hoe de URL's voor verschillende acties eruit zullen zien.

Alle gebruikers ophalen:

urlGET http://api.loc/users/

Een gebruiker ophalen op basis van zijn id:

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

Een gebruiker aanmaken:

urlPOST http://api.loc/user/

Een gebruiker wijzigen op basis van zijn id:

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

Een gebruiker verwijderen op basis van zijn id:

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

Laten we eens kijken hoe REST API wordt geïmplementeerd in PHP. Er is een zeker probleem. Feit is dat zowel PHP als CURL alleen de GET- en POST-methoden ondersteunen:

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

Daarom moeten we een list gebruiken voor de implementatie van REST API. De essentie ervan is dat in werkelijkheid gegevens alleen worden doorgegeven via GET- en POST-methoden, maar we zullen het werk van andere methoden simuleren met behulp van een aangepaste HTTP-header. Laten we deze bijvoorbeeld HTTP-X-HTTP-METHOD noemen.

Dan kunnen we de inhoud van deze header als volgt verkrijgen:

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

Nu kunnen we de API-implementatie schrijven:

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

Implementeer een REST API voor producten van een webwinkel.

Задание 2

Test de werking van de geïmplementeerde API met behulp van de CURL-bibliotheek.